PS:下面的知识点总结大部分来自《王道考研》操作系统课程的笔记!!!
内核:负责管理各个任务,为每个任务分配CPU时间,并负责任务之间通讯。分为不可剥夺型内核和可剥夺型内核;
内核空间 :操作系统(Operating System)是管理计算机硬件与软件资源的程序,操作系统内核驻留在受保护的内核空间。
用户空间:应用是运行在操作系统上运行的程序,工作在用户空间。
隔离:出于安全性和稳定性的考虑,用户空间的程序是无法直接执行内核代码(例如:I/O 读写、创建新进程/线程)的,也无法直接的访问内核数据,必须通过系统调用。
线程和CPU: 线程是和CPU核绑定的,而进程会在核中间进行切换.
程序执行:程序执行前需先放到内存中才能被CPU处理,因此内存主要作用是缓和CPU与硬盘之间的速度矛盾
原子性:是指某种任务执行,要么不执行,要么执行到底,中间不可中断。
原语:指由若干个指令组成,用来实现某个特定的操作的一个过程。
进程:进程是分配系统资源的单位(包括内存地址空间),每个进程拥有的内存地址空间相互独立。
首先,程序是一系列指令的系列的集合体
进程= PCB(一种数据结果,对应叫做进程控制块)+ 程序段+数据段
程序段:是程序代码的一些了指令集,存放要执行的代码
数据段:程序运行时使用,产生的运算数据(如:全局变量,局部变量,宏定义的常量等)
PCB:操作系统通过PCB来管理进程,它包含的是操作系统对进程管理所需的各自信息的一个数据结构体。
PS:
PCB的作用是把程序变成可并发执行的进程。 PCB是进程存在的唯一标记 PCB是需要被系统频繁调用访问,因此它里面信息必须全部或部分进行内存常驻。 PCB的组成
典型的定义:
在操作系统的中多进程之间的管理交互问题。
进程控制
CPU执行状态:内核态和用户态
进程控制主要是控制进程状态的切换!
进程是程序的一次执行,在执行的过程中,有的时候进程正在被CPU处理,有的时候需要等待CPU处理完成后才可以进行获取CPU执行。所以为方便管理,操作系统给进程划分了五种状态:
PS:(进程已经拥有了除CPU之外所有的需要资源)
PS:
PS:比如:
引发进程切换的事件
当前进程事件片到 有更高优先级的进程到达 当前仅主动阻塞 当前进程终止 状态切换说明
阻塞态----》就绪态 :不是进程自身能控制的,是处于一种被动的行为。 运行态----》阻塞态:是进程自身做的出一个行为属于:主动行为 不能直接由 阻塞态----》运行态(因为阻塞态是进程主动请求的,而如果进程还没有运行就无法发出运行的请求) 不能直接由 就绪态----》阻塞态(因为阻塞态是进程主动请求的,而如果进程还没有运行就无法发出运行的请求) 所以如果进程不处于运行态,则无法进行相关主动切换。
进程控制会导致进程状态的切换:
无论哪个原语无非需要做的三类事情是:
引起进程的阻塞的事件:
进程的阻塞是通过阻塞原语来完成:
引起进程的唤醒的事件:
进程的唤醒是通过唤醒原语来完成:
因为进程存在异步的特性:异步性是指各并发执行的进程以各自的独立的不可预知的速度向前推进。但是如果存在某些制约限制条件的情况,相关的进程之间的调用结果需要遵循定义的次序,此时就需要做相关的进程同步。
PS:同步也叫做直接制约关系,它是指某为完成某种任务而建立的两个多或多个进程,这些进程的存在一定依赖关系,需要再某些位置上协调他们的工作次序而产生的制约关系。
因为我们的进程有并发性,而‘并发’需要‘共享’的存在,各个并发执行的程序必不可免的需要进行一系统资源的共享(内存,打印机,摄像头等)
资源共享方式:
互斥共享:系统中某些资源,虽然可以提供给多个进程使用,但是同一个时间内置允许某个进程访问该资源,必须进程互斥(只能一个人进行视频聊天),另一个想访问资源的进程必须等待,等占用进程访问结束后,资源释放后才可以进行资源的使用。
同时共享:系统中的某些资源,允许一个时间段内由多个进程‘同时’对他们进行访问。(浏览器播放歌曲,QQ音乐播放歌曲,两个都是播放歌曲)
对于互斥共享中的资源我们通常也叫做临界资源,对临界资源的访问的在逻辑上的划分:
进入区
负责检测是否可以进入临界区,如果可以进入免责赢设置正在访问临界的资源的标志(可以理解为上锁),便于阻止其他进程同事进入临界区。
临界区:访问临界资源的代码
退出区:负责接触正在访问临界资源的标记(可以理解为解锁)
剩余区:做其他的处理
临界区是进程中访问临界资源的代码段
进入区和退出区:负责实现互斥的代码段
线程引入:也是增加并发的任务执行。
进程是程序一个次执行,如果一个进程内同时需要做其他更多的事情,则无法完成。所以在进程的基础之上引入的线程。
引入线程后,进程只作为除CPU之外的系统资源分配的单元(如打印机,内存地址空等都是分配给进程的)
(进程是资源分配的基本单位,线程是调度的基本单位)
在多线程操作系统中,各个系统的实现方式并不相同,所以不同的系统对于多线程应用也有所不同。
在有的系统中实现了用户级线程,有的系统中实现了内核级线程(轻量级进程)。
用户级线程
缺点:
上图(用户级线程是一种”多对一”的线程映射):
上图说明的是一个多对1的一种用户模型和内核线程的之间的问题描述。
1)库调度器从进程的多个线程中选择一个线程
2)然后该线程和该进程允许的一个内核线程关联起来。
3)内核线程将被操作系统调度器指派到处理器内核。
内核级线程(windows系统下的线程)
缺点:进入到了内核态,切换系统开销大。
如上图所示,即内核级线程的实现方式, 每个用户线程都直接与一个内核线程相关联.
PS:内核线程才是CPU调度的分配的基本单位
PS:内核线程才是CPU调度的分配的基本单位
PS:内核线程才是CPU调度的分配的基本单位
用户级与内核级的多路复用:内核统一调度内核线程,每个内核线程对应n个用户线程(多堆垛的线程模式)
或从资源管理器查看线程数:
多线程模型 :https://kernel.blog.csdn.net/article/details/51892437
个人其他博客地址
简书:https://www.jianshu.com/u/d6960089b087
掘金:https://juejin.cn/user/2963939079225608
小钟同学 | 文 【原创】| QQ:308711822
1:本文相关描述主要是个人的认知和见解,如有不当之处,还望各位大佬指正。 2:关于文章内容,有部分内容参考自互联网,如有链接会声明标注;如没有及时标注备注的链接的,如有侵权请联系,我会立即删除处理哟。
原文作者:程序员小钟同学;如有侵权,请联系管理员删除。