【操作系统】【进程】进程与线程
”进程实现了让我们能够在上QQ的时候听歌,还写着文档... 这些都是进程”
进程由程序段,数据段,PCB三部分组成。
PCB:系统通过PCB来管理进程,因此PCB中应该包含操作系统对其进行管理所需的各种信息。
数据段:程序运行时使用产生的数据,如全局变量,局部变量等等。
进程的独立性:进程是资源分配,接受调度的基本单位。
进程的三种基本状态:
运行态 | 就绪态 | 阻塞态 |
占有CPU,并在CPU上运行。单核处理机环境下, 每一时刻最多只有一个进程处于运行状态。 |
已经具备运行条件,但由于没有空闲CPU而暂时不能运行。 | 因等待某一事件而暂时不能运行。 |
新建态 |
终止态 | |
王正在被创建操作系统,为进程分配资源,初始化PCB。 |
进程正在从系统中撤销,操作系统会回收进程拥有的资源,撤销PCB。 |
进程状态的转换:
进程控制:通过原语实现进程之间的转换。
为了防止程序从一个态到另一个态但PCB数据没被修改,就发明了原语进行程序的控制。原语的特点是执行期间不允许中断,只能一气呵成。,原语采用关中断指令和开中断指令实现,只有执行完原语代码,别的程序才开始执行。是只能在核心态下执行的特权指令。
进程通信:
进出层是分配系统资源的单位,包括内存地址空间,因此各进程拥有的内存地址空间相互独立。为了保证安全,一个进程不能直接访问另一个进程的地址空间。所以衍生出来进程通信的三种方法分别是共享存储、消息传递、管道通信。
共享存储:两个进程可以通过共享空间相互访问。但访问的时候是互斥的,如进程一写入的时进程二不能写入。共享存储分为基于数据结构的共享和基于存储器的共享,前者是低级通信方式,后者是高级通信方式。
管道通信:“管道”是指用于应该了解读写进程的一个共享文件,又名pipe文件。其实就是在内存中开辟一个大小固定的缓冲区。
消息传递:进程间的数据交换以格式化的消息为单位。经常通过操作系统提供的”发送消息/收消息”的两个言语进行数据交换。
消息传递分为直接通信方式和间接通信方式。接通信方式是将消息直接挂到接收进程的消息缓冲队列上。间接通信方式是消息要通过原语先发送到中间实体(信箱)中,在通过原语被另一个进程接收。
线程:
一个进程可以拥有多个线程,进程在被处理的时候这些线程被并发的执行。县城是一个基本的CPU执行单元,也是指程序执行流的最小单位。可以使一个进程内也可以并发处理各种任务(如QQ视频、文字聊天、传文件),引入线程和进程只作为除CPU之外的系统。资源的分配单元(如打印机,内存地址空间等都是分配给进程的。)
线程是处理机调度的单位,进程是资源分配的单位
进程的实现方式:
用户级线程,内核级线程(内核级线程才是处理机分配的单位)
多线程模型:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能