ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

操作系统(王道第二章进程与线程)

2021-10-23 10:05:59  阅读:144  来源: 互联网

标签:操作系统 并发 王道 PCB 原语 线程 内核 进程


进程的定义、组成、组织方式和特征

定义
引入多道进程并发执行机制后,为了方便操作系统管理,引入进程概念
系统为每一个运行的程序配置一个进程控制块(PCB),记录进程信息
进程实体:由PCB,程序段,数据段构成
实际所说的创建进程,指的就是创建进程实体中的PCB
一般不区分进程和进程实体
组成
PCB(详细组成),程序段,数据段
进程的管理者所需的数据全部存放在PCB中
组织
多个进程之间的组织
链接方式——队列
索引方式——索引表
特征
动态、并发、独立、异步、结构

状态与转换

状态
三种基本状态:运行态,就绪态,阻塞态
还有创建态,终止态
状态转换

进程控制

概念
进程控制就是要实现状态转换
如何进行进程控制?
状态转换之间需要修改PCB等许多内容,为了防止修改内容被中断,使用了原语
原语的特点就是执行期间不允许中断,只能一气呵成,这要求使用关中断命令和开中断命令(关中断顾名思义,就是关闭,忽略中断命令),这两个指令都是只允许在核心态下执行的特权指令。
进程控制相关的原语
创建原语
撤销原语
阻塞原语 / 唤醒原语(成对出现)
切换原语

进程通信

进程通信就是进程之间的信息交换
进程是分配系统资源的单位,各进程拥有的内存地址空间相对独立,一个进程不能直接访问另一个进程的地址空间
共享存储
互斥访问共享空间(同步互斥)
基于数据结构的共享
基于存储区的共享(较高级)
管道通信
管道是指用于连续读写进程的一个共享文件,其实就是内存中的一个缓冲区。
管道通信是半双工通信,指虽然可以双向连通,但是同一时间段只能实现单向的传输。互斥访问管道。
管道写满后,写进程的write系统调用会被阻塞,管道变空后,读进程的read会被阻塞。如果没写满,就不允许读,如果没读完,就不允许写。数据被读出后就会被抛弃。
消息传递
以格式化的消息为单位,通过发送消息和接收消息两个原语实现
消息:消息头 消息体
直接通信方式:消息直接挂到接收进程的缓冲队列上
间接通信方式:消息要先发送到中间实体信箱中

线程

有的进程需要同时执行很多程序,所以引入线程来增加并发度
传统的进程是程序执行流的最小单位,现在每个进程中包括多个线程,线程成为程序执行流的最小单位,是基本的CPU执行、调度单位。
而进程是除了CPU以外的系统资源的分配单位(如内存地址空间,打印机),线程几乎不拥有系统资源
同一进程间的线程切换减少了系统开销
线程的实现方式
用户级线程:用户视角看到的线程,操作系统看不到的线程
内核级线程:由内核负责,这个才是处理机分配的单位
由几个用户级线程映射到几个内核级线程的问题引出多线程模型的概念
多线程模型
多对一模型:用户级线程的线程切换在用户态完成,系统开销小;但是系统并发度低
一对一模型:变成纯粹的内核级线程,并发度高;但是线程管理成本大
多对多模型:n个用户级线程对应m个内核级线程,n>=m

标签:操作系统,并发,王道,PCB,原语,线程,内核,进程
来源: https://blog.csdn.net/Fun2002/article/details/120755960

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有