复习总结(4)操作系统(2)进程与线程ProcessAndThread

第二章:进程与线程(Process and Thread)

线程Process

2.1.1进程模型

一个进程就是一个正在执行程序的实例,包括程序计数器(program counter)、寄存器和变量的当前值。

2.1.2创建进程

有4种主要事件导致进程的创建:
1)系统初始化
2)执行了正在运行的进程所调用的进程创建系统调用
3)用户请求创建一个新进程
4)一个批处理作业的初始化

停留在后台处理的进程称为守护进程(daemon),在UNIX中使用ps命令可以列出正在运行的进程。

使用fork系统调用可以创建新进程。(可能需要了解的:fork和vfork区别)

2.1.3进程的终止

进程的终止通常由下列条件引起:
1)正常退出(自愿的)
2)出错退出(自愿的)
3)严重错误(非自愿)
4)被其他进程杀死(非自愿)

2.1.4进程的层次结构

进程和它的所有子女以及后裔共同组成一个进程组。
在整个系统中,所有的进程都属于以init为根的一棵树。
windows没有进程层次的概念,所有的进程都是地位相同的。创建进程时,父进程得到一个句柄,可以用来控制子进程。

2.1.5进程的三个状态

 

2.1.6进程的实现

操作系统维护一张表格(结构数组),即进程表(process table)。
每个进程占用一个进程表项(Processing Control Block)
包括一下内容。

 

2.1.7多道程序(multiprogramming)设计模型

 

 

 

 

 

线程(Thread)

2.2.1线程的使用

这里简单介绍了一下线程的使用场景。

2.2.2经典的线程模型

 

这里要注意的是线程之间共享的东西。

2.2.3POSIX线程

介绍了一下Pthread的函数调用。

2.2.4在用户空间中实现线程
2.2.5在内核中实现进程

 

2.3进程间通讯(Inter Process Communication)#重点

2.3.1竞争条件(race condition)
2.3.2临界区(critical region)

需要互斥(mutual exclusion),即确保当一个进程在使用一个共享变量或文件时,其它进程不能做同样的操作。

2.3.3忙等待的互斥

讨论几种实现互斥的方案,包括:
屏蔽中断
锁变量
严格轮转法
peterson解法
TSL指令:测试并加锁(Tset and Set Lock)是硬件支持的一种方案。

2.3.4睡眠与唤醒

生产者-消费者问题(producer-consumer)称为有界缓冲区(bounded-buffer)问题。# 这个是重点

2.3.5信号量(semaphore)#这个也是重点

用一个整型变量累计唤醒次数。Proberen使信号量减一,Verhogen使信号量加一。

如何用信号量解决生产者-消费者问题。

另一种用途是同步(synchronization)。用信号量来保证某种时间的顺序发生或不发生。

2.3.6互斥量(mutex)

信号量的一个简化版本。

2.3.7管程(Monitor)

任一时刻管程中只能有一个活跃进程。
互斥由编译器负责,但通常的做法是用一个互斥量或二元信号量。

2.3.8消息传递massage passing
2.3.9屏障barrier

用于进程组而不是用于生产者-消费者类情形的。

 

2.4调度

调度的三种不同环境:
批处理
交互式
实时

批处理系统中的调度:
先来先服务(first-come first-severd)
最短作业优先(shortest job first)
最短剩余时间优先(shortest remaining time next)有关的运行时间必须提前掌握。

交互式系统的调度
1轮转调度(round robin),每个进程分配一个时间片(quantum)。进程切换(Process switch)又称为上下文切换(context switch)
2、优先级调度
3、多级队列
4、最短进程优先。根据过去的行为进程推车某命令运行时间。T=aT0+(1-a)T1
5、保证调度:每个进程获得1/n的CPU时间。
6、彩票调度(lottery scheduling)
7、公平分享调度Fair-Share Scheduling:n个用户每个用户有1/nCPU时间,无关进程

 

2.5经典的IPC问题

2.5.1哲学家就餐问题

2.5.2读者-写者问题

 

 

复习总结(3)操作系统OperatingSystem(1)BasicConcepts

第一章:引论

1.1:作为扩展机器的操作系统

作为资源管理者的操作系统

 

1.2:操作系统的历史:

真空管和穿孔卡片

晶体管和批处理系统

集成电路芯片和多道程序设计

个人计算机

 

1.3:计算机硬件介绍:

CPU

存储器

磁盘

磁带

I/O设备

总线

启动计算机

 

1.4:各种操作系统介绍:

大型机操作系统

服务器操作系统

多处理器操作系统

个人计算机操作系统

掌上计算机操作系统

嵌入式操作系统

传感器节点操作系统

实时操作系统

智能卡操作系统

 

1.5:操作系统概念(Basic concepts)

进程

地址空间

文件

输入输出

保护

Shell

程序计数器:program counter,保存下一条指令的内存地址

堆栈指针:stack pointer,内存栈顶

程序状态字:PSW,program status word保存条件码位,CPU优先级,模式(用户/内核),其他控制位

多路复用:multiplexing

堆栈指针:stack pointer,内存栈顶

程序状态字:PSW,program status word保存条件码位,CPU优先级,模式(用户/内核),其他控制位

多路复用:multiplexing

用户态:user mode

内核态:kernel mode

系统调用:System Call,从操作系统获得服务,陷入内核并调用操作系统

Trap:Trap指令把用户态切为内核态

 

进程:Process

地址空间:address space :从某个最小值的存储位置到最大值存储位置的列表

进程表:Process table,操作系统的一个表,数组或者链表结构,记录进程的所有信息

命令解释器:command interpreter用于从终端上读命令

进程间通讯:interprocess communication

UID: User Identification 用户标识