操作系统笔记-2.1进程的知识

目录


进程的定义

进程一般也称为进程实体(进程映像),由数据段,程序段,PCB(程序控制块)三部分组成

创建进程,实质上是创建进程实体中的PCB;而撤销进程,实质上也是是撤销PCB

注意:PCB是进程存在的唯一标志!

进程是进程实体的运行过程(动态性),是系统进行资源分配和调度的最小单位

严格来说:进程实体和进程不一样,进程实体是静态的,进程是动态的


进程的组成

PCB

PCB:操作系统通过PCB来管理进程,因此PCB中应该包含操作系统对其进行管理所需的各种信息

程序段

程序代码

数据段

程序运行时使用,产生的运算数据,如变量,宏定义常量等


进程的组织

进程的组织讨论的是多个进程之间的组织方式问题

链接方式

按照进程状态将PCB分为多个队列,操作系统持有指向各个队列的指针

索引方式

根据进程状态的不同,建立几张索引表,操作系统持有指向各个索引表的指针


进程的特征

动态性(最基本特征):进程是程序的一次执行过程,是动态地产生、变化和消亡的

并发性:内存中有多个进程实体,各进程并发进行

独立性:进程是能独立运行、独立获得资源、独立接受调度的基本单位

异步性:各进程独立的、不可预知的速度向前推进。OS要提供“进程同步机制”来解决异步问题

结构性:每个进程都配置一个PCB。结构上看,进程由程序段,数据段、PCB组成


进程的状态

三种基本状态

运行态:占用CPU,并在CPU上运行

就绪态:已经具备运行条件,但没有空闲CPU,暂时不能运行

阻塞态(等待态):因等待某一事件,而未能运行

另外两种状态

创建态:进程正在被创建,操作系统为进程分配资源,初始化PCB

终止态:进程从系统中撤销,操作系统回收进程资源,撤销PCB


进程控制

进程控制简单来说就是进程状态的转换

创建进程:需要初始化PCB,分配系统资源

创建态->就绪态:修改PCB内容和相应队列

就绪态->运行态:恢复进程运行环境、修改PCB内容和相应队列

运行态->阻塞态:保存进程运行环境,修改PCB内容和相应队列

运行态->终止态:回收进程拥有的资源,回收PCB

运行态->就绪态:保存进程运行的环境,修改PCB内容和相应队列

阻塞态->就绪态:修改PCB内存和相应队列。如果等待的是资源,则还需为进程分配系统资源

实现进程控制

原语实现进程控制,原语的特点是执行期间不允许中断,有原子操作性

原语使用”关中断指令“和”开中断指令“

开/关中断指令的权限非常大,是只允许在核心态下执行的特权指令

每个原语是三类事情:

1.更新PCB信息

2.将PCB插入合适的队列

3.分配/回收资源


进程通信

进程通信就是进程之间的信息交换

进程是分配系统资源的单位(包括内存地址空间),因此各进程内存空间独立

为了保证安全,一个进程不能直接访问另一个进程的地址空间

但是进程之间的信息交换又必须实现。为了保证安全,操作系统提高一些通信方法

共享存储

在内存中开辟一块共享空间,两个进程对共享空间的访问必须是互斥

基于数据结构的共享:速度慢,限制多,低级通信

基于存储区的共享:数据形式、存放位置由进程控制,而不是操作系统,更快,高级通信

管道通信

  • 一个管道只能半双工通信,所以要实现双向实时通信,则需要设置两个管道
  • 数据以字符流形势写入管道,当管道写满时,写进程的write系统调用将被阻塞,等待都进程将数据取走。当读进程全部取走数据后,管道变空,此时读进程的read()将被阻塞
  • 如果没写满,就不允许读。如果没读空,就不允许写
  • 数据一旦读出,就被管道抛弃,意味着读进程最多只有一个

消息传递

进程间的数据交换以格式化信息(Message)为单位。

进程通过OS提供的“发送消息/接收消息”两个原语进行数据交换

直接通信方式:进程1通过发送原语将信息挂在进程2的消息缓冲队列尾,进程2通过接收原语接收

间接通信方式:消息先要发送到中间实体(信箱)中。因此也称“信箱通信方式”


线程-轻量级进程

一个进程可能需要“同时”做很多事情,而传统进程只能串行,故引入线程,增加并发度

线程是一个基本的CPU执行单元,也是程序执行流的最小单位

引入线程后,进程只作为除CPU之外的系统资源的分配单元

        --如内存地址空间等都是分配给进程的

进程

线程

资源分配、调度

资源分配的最小单位

cpu调度的基本单位

并发性

系统开销

进程切换开销大

线程切换开销小

线程的实现方式

用户级线程

内核级线程

用户级线程应该由应用程序通过线程库实现

内核级线程的管理工作由操作系统内核完成

用户级线程中,线程切换可以在用户态下完成,无需OS干预

线程调度、切换工作由内核负责,内核级线程的切换必需在核心态下完成

所有的线程管理工作应用程序负责(包括线程切换)

内核级线程才是处理机分配的单位

多线程模型

多对一模型:一个内核级线程,多个用户级线程

优点:用户级线程切换在用户态完成,不需要核心态,线程管理系统开销小,效率高

缺点:一个用户级线程阻塞后,整个进程都被阻塞,并发度不高

一对一模型:一个内核级线程对应一个用户级线程

优点:一个线程阻塞后,彼得线程还可以执行,并发能力强。多线程可以在多核机器上并行执行

缺点:一个用户进程占用多个内核级线程,线程切换由OS完成,需要切换核心态,开销大

多对多模型:n用户线程映射到m个内核级线程(n>m)

克服了多对一模型并发度不高的问题,又克服一对一模型中一个用户进程占用太多内核级线程问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
操作系统的重点知识笔记包括以下内容: 1. 操作系统的基本概念和地位,涉及操作系统的定义、作用以及在计算机系统中的位置。 2. 操作系统的主要特征和基本功能,包括进程管理、内存管理、文件系统、设备管理等。 3. 操作系统的体系结构,涉及单体结构、客户端-服务器结构、分层结构、微内核结构等不同的操作系统结构设计方法。 4. 操作系统的发展和结构,包括不同操作系统的发展历程和演变过程,以及它们的结构特点。 5. 对于Java基础学习,可以参考比较详细的Java基础学习笔记。 总之,操作系统是指在一台主机上连接了多个配有显示器和键盘的终端并由此所组成的系统,它允许多个用户同时通过自己的终端,以交互方式使用计算机,共享主机中的资源。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [自考操作系统02326笔记2017版教程 第一章](https://download.csdn.net/download/alang1991/11076432)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Java基础笔记MarkDown版4万字肝吐血](https://download.csdn.net/download/qq_33865785/88275967)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [操作系统OS笔记知识点总结](https://download.csdn.net/download/ruanerzhaopeng/10128041)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值