进程控制
用户模式
很少的被允许的指令应用经常运行在这个模式下系统模式、控制模式、内核模式
可以访问到系统和内核的指令两种模式的转换
user->system
创建进程
分配id分配空间初始化控制块…
init pid = 1全部进程的祖先进程
切换进程
$p_0$ -> save into $PCB_0$ -> reload $PCB_1$ -> do $p_1$ -> save $PCB_1$ -> reload $PCB_0$ -> do $P_0$ -> …
User Mode -> Kernel Mode
原因
中断
时钟中断I/O中断异常系统调用(Supervisor Call)
细节
保存COntextload PCBinto queue调度程序选择合适进程执行(优先级or something)改变相应进程状态更改数据结构恢复
操作系统的执行进程的策略
无进程内核
全部任务在kernel中进行
用户进程执行
对每个进程进行内存分配。
将应用程序需要的内存空间分配到每个进程中。
进程空间:
用户空间内核空间
操作系统的状态备份
空间分配方案:
PCBStackprivate User…
基于进程的操作系统
适用于多核的处理器
每个操作系统将自身当作一个进程,交互数据通过switch function进行。
Unix SVR4 进程管理模型
采用用户进程的模式
Unix 进程状态
用户模式运行内核模式运行就绪态阻塞挂起就绪态挂起阻塞态抢占初始态僵尸态
Linux 进程管理与系统调用
创建进程-fork()
123#include <sys/types.h>#include <unistd.h>pid_t fork(void);
调用fork() 后子进程和父进程共享代码。
退出进程
exit(int status) : 退出一个进程atexit(void) : 退出进程前可以执行一个函数wait(int status) : 等待子进程结束waitpid(pid_t pid, int status, int option) : 等待某个进程号的子进程结束
进程
进程与线程的相似性
动态性并发性
多线程
MS-DOS: 单线程、单进程
资源分配的最小单位——进程调度的最小单位——线程
线程——创建在进程的地址空间(成本低)
线程的特点
状态
派生其他线程阻塞结束阻塞终止线程
线程同步
线程类型
用户级别线程内核级别线程
用户级别线程
切换成本小线程被阻塞,整个进程被阻塞。
内核级线程
成本高
混合式
both of them
Linux 线程管理
创建
123#include <pthread.h>int pthread_create(pthread_t * restrict tidp, ...);