本文共 3598 字,大约阅读时间需要 11 分钟。
程序
:是静态的,就是个存放在磁盘里的可执行文件,就是一系列的指令集合。
进程
:是动态的,是程序的一次执行过程,同一个程序多次执行会对应多个进程 进程实体(进程映像)
:是进程某一时刻的实体,它是静态的 PCB
:为了使参与并发执行的程序(含数据)能独立地运行,必须为之配置一个专门的数据结构,称为进程控制块(PCB)。系统利用PCB来实现进程描述信息、进程控制和管理信息、资源分配清单、处理机相关信息。PCB是进程存在的唯一标志,当进程被创建时,操作系统为其创建PCB,当进程结束时,会回收其PCB
。
PID
:当进程被创建时,操作系统会为该进程分配一个唯一的、不重复的“身份证号”—— PID(Process ID,进程ID)
程序的代码(指令序列
)
运行过程中产生的各种数据(如:程序中定义的变量)
动态性是进程最基本的特征
,进程是程序的一次执行过程,是动态地产生、变化和消亡的
内存中有多个进程实体,各进程可并发执行
进程是能独立运行、独立获得资源、独立接受调度的基本单位
这里有点小问题,学完进程调度回来总结
各进程按各自独立的、不可预知的速度向前推进,操作系统要提供"进程同步机制"来解决异步问题
每个进程都会配置一个PCB。结构上看,进程由程序段、数据段、PCB组成。
进程正在被创建时,它的状态是“创建态”,在这个阶段操作系统会为进程分配资源、初始化PCB
当进程创建完成后,便进入“就绪态”, 处于就绪态的进程已经具备运行条件, 但由于没有空闲CPU,就暂时不能运行
如果一个进程此时在CPU上运行,那么这个进程处于“运行态”。CPU会执行该进程对应的程序(执行指令序列)
在进程运行的过程中,可能会请求等待某个事件的发生(如等待某种系统资源的分配,或者等待其他进程的响应)。在这个事件发生之前,进程无法继续往下执行,此时操作系统会让这个进程下CPU,并让它进入“阻塞态” 当CPU空闲时,又会选择另一个“就绪态”进程上CPU运行
一个进程可以执行 exit 系统调用,请求操作系统终止该进程。 此时该进程会进入“终止态”,操作系统会让该进程下CPU, 并回收内存空间等资源,最后还要回收该进程的PCB。 当终止进程的工作完成之后,这个进程就彻底消失了。
顾名思义,进程通信就是指进程之间的信息交换。 进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立。为了保证安全,一个进程不能直接访问另 一个进程的地址空间。
两个进程对共享空间的访问必须是互斥的(互斥访问通过操作系统提供的工具实现)。操作系统只负责提供共享空间和同步互斥工具(如P、V操作)。
基于数据结构的共享
:比如共享空间里只能放 一个长度为10的数组。这种共享方式速度慢、 限制多,是一种低级通信方式
基于存储区的共享
:在内存中画出一块共享存 储区,数据的形式、存放位置都由进程控制, 而不是操作系统。相比之下,这种共享方式速 度更快,是一种高级通信方式。
“管道”是指用于连接读写进程的一个共享文件,又名pipe文件。其实就是在内存中开辟一个大小固定的缓冲区。
半双工通信
,某一时间段内只能实现单向的传输。如果要实现双向同时通信,则需要设置两个管道。如果没写满,就不允许读。如果没读空,就不允许写。
读进程最多只能有一个
,否则可能会有读错数据的情况。写进程可有多个
。进程间的数据交换以格式化的消息(Message)为单位。进程通过操作系统提供的“发送消息/接收消息”两个原语进行数据交换。
消息直接挂到接收进程的消息缓冲队列上
消息要先发送到中间实体(信箱)中,因此 也称“信箱通信方式”。Eg:计网中的电子 邮件系统
早期的操作系统(如:早期Unix)只支持进程, 不支持线程。当时的“线程”是由线程库实现的
所有的线程管理工作都由应用程序负责(包括线程切换)
线程切换可以在用户态下即可完成
,无需操作系统干预。操作系统内核看来,并意识不到线程的存在。
“用户级线程”就是“从用户视角看能看到的线程”优点
:用户级线程的切换在用户空间即可完成,不需要切换到核心态,线程管理的系统开销小,效率高
缺点
:当一个用户级线程被阻塞后,整个进程都会被阻塞,并发度不高。多个线程不可 在多核处理机上并行运行。 由操作系统支持的线程
优点
:当一个线程被阻塞后,别的线程还可以继续执行,并发能力强。多线程可在多核 处理机上并行执行。
缺点
:一个用户进程会占用多个内核级线程, 线程切换由操作系统内核完成,需要切换到核心态,因此线程管理的成本高,开销大。 一对一模型
:一个用户级线程映射到一个内核级线程。每个用户进程有与用户级线程同 数量的内核级线程。
优点
:当一个线程被阻塞后,别的线程还可以继续执行,并发能力强。多线程可在多核处理机上并行执行。
缺点
:一个用户进程会占用多个内核级线程, 线程切换由操作系统内核完成,需要切换到核心态,因此线程管理的成本高,开销大。 多对一模型
:多个用户级线程映射到一个内核级线程。且一个进程只被分配一个内核级线程。
优点
:用户级线程的切换在用户空间即可完 成,不需要切换到核心态,线程管理的系统 开销小,效率高 缺点
:当一个用户级线程被阻塞后,整个进程都会被阻塞,并发度不高。多个线程不可 在多核处理机上并行运行 多对多模型
:n 用户及线程映射到 m 个内核级线程(n >= m)。每个用户进程对应 m 个内核级线程。
1.线程包含CPU现场,可以独立执行程序
2.线程没有自己独立的地址空间,它共享其所属进程的空间 3.进程与程序的根本区别是静态和动态特点。 4.程序封闭性是指进程执行的结果只取决于进程本身,不受外界影响。 5.C语言编写的程序在使用内存时一般分为三个段,它们一般是正文段(即代码和赋值数据段)、数据堆段和数据栈段。二进制代码和常量存放在正文段,动态分配的存储区在数据堆段,临时使用的变量在数据栈段。由此,我们可以确定全局赋值变量在正文段赋值数据段,未赋值的局部变量和实参传递在栈段,动态内存分配在堆段,常量在正文段,进程的优先级只能在PCB内。BDDCBA 6.只有从运行态到阻塞态的转换是由进程自身决定的。 7.对进程的管理和控制功能是通过执行各种原语来实现的,如创建原语等。 8.同一进程或不同进程内的线程都可以并发执行 9.假定系统进程请求一次I/O操作后,将使进程状态从运行态变成阻塞态;系统进程所请求的一次I/O操作完成后,将使进程状态从阻塞态变为就绪态。 10.某进程退出临界区后,之前因需要进入该临界区而被阻塞的有关进程会被唤醒转载地址:http://mzmzi.baihongyu.com/