十天玩转操作系统!!柠笙带你复习梳理,详细图解!!!


       操作系统(OS)这门学科在计算机领域有着很重要的作用,作为计算机硬件和软件的临界者,对计算机发展有着很重要的意义,随着时代的不断发展,越来越多的操作系统进入大众视野,无论是大家耳熟能详的Windows、MAC,抑或是程序员口中经常念叨的Linux。除了电脑操作系统,手机中的鸿蒙、苹果、安卓也是大家关注的热点,因此要想在计算机领域有所造诣,操作系统是必须要了解掌握的一门学科,因此在这里借助平台,跟大家分享一下我学习操作系统的经验和笔记,用十天的时间来和大家梳理和整理这门学科,让我们一起探索其中的奥秘,享受知识带给我们的快乐吧!!!

何为进程

进程的定义

程序:一个指令序列(早期计算机只支持单道程序)
PCB、程序段、数据段构成了进程实体(进程映像)
PCB是进程存在的唯一标志

1.进程是程序的一次执行过程
2.进程是一个程序及其数据在处理机上顺序执行时所发生的活动
3.进程是具有独立功能的程序在数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位

进程实体是静态的,进程是动态的

进程的组成

请添加图片描述PCB:进程的管理者(操作系统)所需要的数据都在PCB中
程序段、数据段:程序本身的运行 所需的数据

进程的组织方式

请添加图片描述执行指针:指向当前处于运行态(执行态)的进程
➟ PCB2
就绪队列指针:指向当前处于就绪态的进程
➟ PCB5 ➟ PCB1 ➟ PCB4(优先级高的进程放在队头)
阻塞队列指针:指向当前处于阻塞态的进程,操作系统还会根据阻塞原因不同,再分为多个阻塞队列
➟ PCB3 ➟ PCB7 ➟ PCB6

执行指针:➟ PCB2
就绪表指针:指向就绪索引表表头
阻塞表指针:指向阻塞索引表表头

进程的特征

请添加图片描述进程是资源分配、接受调度的基本单位

进程的状态

(1)运行态(Running)
占有CPU,并在CPU上运行(单核一个CPU,多核多个CPU)
(2)就绪态(Ready)
已经具备运行条件,由于没有空闲CPU,暂时不能运行(资源分配完成等待处理)
(3)阻塞态(Waiting/Blocked,等待态)
因等待一事件暂时不能运行
(4)创建态(New,新建态)
进程正在被创建,操作系统为进程分配资源,初始化PCB
(5)终止态(Terminated,结束态)
进程从系统中撤销,操作系统回收进程资源、撤销PCB

进程状态间转换

                                                              进程状态转换关系图
请添加图片描述

进程控制目的

实现进程状态间的转化
使用原语实现进程控制,借助原语执行期间不中断的特性(原子操作),采用“关中断”、“开中断”实现(在核心态下执行的特权命令)

1、更新PCB信息(进程状态标志、保存运行环境至PCB、从PCB恢复运行环境)
2、将PCB插入合适队列
3、分配\回收资源
请添加图片描述

进程通信

进程之间的信息交换,进程是分配系统资源的单位,各进程拥有的内存地址空间相互独立
为了安全,一个进程不能直接访问另一个进程的地址空间。

(1)共享存储
两个进程对共享空间的访问必须是互斥的

  • 基于数据结构:共享速度慢、限制多,是一种低级通信的方式
  • 基于存储区共享:进程控制一块共享存储区,速度更快,是一种高级通信方式

(2)管道通信

  • 管道只能采用半双工通信,某一时段只能单向传输,双向同时通信需要两个管道
  • 各进程要互斥地访问管道
  • 数据以字符流写入管道,当管道写满时,写进程的write()系统调用将被阻塞,等待读进程将数据取当管道变空,读进程read()系统调用被阻塞
  • 若是没有写满,就不允许读取。没有读空,就不允许写进
  • 读进程只能有一个,避免数据读取出错

(3)消息传递
进程间的数据交换以格式化消息为单位。进程通过操作系统提供的“发送消息/接收消息”两个原语进行数据交换

  • 直接通信方式:消息直接挂到接收进程的消息缓冲队列上
  • 间接通信方式:消息要先发送到中间实体(信箱)中,因此也称“信箱通信方式”

      线程作为操作系统中最重要的一趴,除了了解其基础概念之外,还需要对相关专业名词进行深入学习,了解PCB、原语、管道、通信等等名词含义,以及其在线程中发挥的作用,了解计算机引进线程概念的缘由,以及其在计算机中发挥的作用和它提供的便利,从而进一步加深对它的理解,形成系统的知识框架。


何为线程

线程的定义

  • 线程是一个基本的CPU执行单元,也是程序执行流的最小单位
  • 进程内的各个线程也可以像进程一样进行并发操作
  • 线程引入后,进程只作为出CPU之外的系统资源的分配单元
  • 线程是处理机调度的单位
  • 多CPU计算机中,各个线程可以占用不同的CPU
  • 每个线程都有一个线程ID、线程控制块TCB
  • 线程也有就绪、阻塞、运行三种基本状态
  • 线程几乎不拥有系统资源
  • 同一进程的不同线程间共享进程的资源
  • 由于共享内存地址空间,同一进程中的线程间通信甚至无需系统干预
  • 同一进程中的线程切换,不会引起进程切换。不同进程中的线程切换,会引起进程切换
  • 切换同进程内的线程,系统开销小、切换进程,系统开销大

线程实现方式

                                                                 用户级线程
请添加图片描述

  • 用户级线程由应用程序通过线程库实现
  • 所有的线程管理工作都由应用程序负责
  • 线程切换可以在用户态下即可完成,无需操作系统干预

                                                                 内核级线程
请添加图片描述

  • 内核级线程的管理工作由操作系统内核完成
  • 线程切换在核心态下完成

                                                          用户+内核组合(多线程)
请添加图片描述 只有内核级线程才是处理机分配的单位,才能分配CPU进程并行处理。

多线程

                                                                        多对一
请添加图片描述优点:用户级线程的切换在用户空间即可完成,开销小,效率高
缺点:当一个用户级线程阻塞红藕,整个进程都会被阻塞,并发度低

                                                                      一对一
请添加图片描述优点:不会因为一个线程阻塞而阻塞,并发性高,多线程可以在多核处理机上并行执行
缺点:会占用多个内核级线程,线程管理成本高,开销大

                                                                        多对多
请添加图片描述优点:克服了多对一模型并发度不高的缺点,组合了两者所长。


      第二天的学习到这里就结束了,不知道小伙伴们收获如何呢?欢迎评论区交流学习,也恳请各位批评指正!!

      操作系统其实就是计算机中的一个大管家,这个大管家有着很多很厉害的角色(就像谍战片里面的大府中的老管家一样),因此学习操作系统这门课,就像是在欣赏一部谍战片,要想理解角色内涵,你就必须站在其角度去思考,思考其可能会遇到的危险以及应对策略(bug与bug的修复),这样你才能在凶险的代码江湖生存下来,成为一代英雄,留下你的印记,期待与各位在江湖的相遇,也希望大家能给作品一个三连!!


本文参考教材:王道考研——操作系统(配套PDF文件,点赞留言后私信我发你)
教材配套讲解视频:b站链接


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柠笙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值