操作系统概念——进程和线程

第三章 进程
3.1 进程概念
进程即运行中的程序,除了包括静态的.text段内容外,还包括指令寄存器、运行时状态、数据、堆、栈等动态内容
进程的几种状态:新建/运行/等待/就绪/结束
进程控制块(PCB):表示进程的数据结构,包括当前状态、PC、各cpu寄存器、调度信息、内存管理信息、运行统计、IO设备等进程全部状态
线程:进程的多任务扩展

3.2 进程调度
调度队列:任务队列/就绪队列/IO等待队列
运行中的进程状态变更场景举例:a)请求IO,进入等待; b)父进程创建子进程并等待其结束; c)中断发生时内核将其放入就绪队列
调度器:长期调度器(Job Scheduler)和 短期调度器 (Cpu Scheduler); Swap机制; 上下文切换机制

3.3 进程操作
进程创建:Linux的fork+exec; 进程结束; zombie: 子进程退出了但父进程不给收尸

3.4 进程间通信
互相协作的进程,一般通过共享内存和消息机制进行通信
消息同步:阻塞写/非阻塞写/阻塞读/非阻塞读; 缓存机制

3.5 IPC系统举例
POSIX共享内存/Mach邮箱消息/Windows ALPC

3.6 Client-Server通信
Socket/RPC/匿名管道/有名管道

第四章 线程
4.1 线程概念
共享代码、数据和文件,有自己的寄存器和栈
好处:快速用户响应/资源共享/轻便经济/多核扩展

4.2 多核编程
挑战:任务分割/均匀平衡/数据分割/数据依赖/测试和调试
并行类型:数据并行/任务并行

4.3 多线程模型
用户线程和内核线程的映射类型:多对一、一对一、多对多

4.4 线程编程库
POSIX Pthreads/Windows Threads/Java Threads

4.5 隐式多线程编程
目的:将多线程的创建和管理等转移到编译器或运行库实现
举例:线程池/OpenMP/苹果的Grand Central Dispatch

4.6 多线程相关问题
fork和exec:针对哪个线程
信号传递:递交给哪个线程?线程指定接受或屏蔽相关信号
线程取消:异步取消(马上退出,资源释放问题)/ 延迟取消(等到安全的时候退出)
Linux采用信号实现取消
线程私有数据支持
用户线程和内核线程映射和通信:LWP/调度激活策略

4.7 特定系统实现
Windows Thread:内核数据结构支持
Linux Thread:clone系统调用,和进程只是共享参数不同

操作系统概念——进程和线程》上有2条评论

发表评论

电子邮件地址不会被公开。