目录
什么是操作系统?
操作系统的定位结构
什么是进程/任务?
操作系统如何管理进程?
PCB(进程控制块)
进程的虚拟地址空间
进程间通信
1.操作系统
什么是操作系统?
操作系统是一个搞管理的软件,是软件硬件用户之间交互的媒介,目前常见的操作系统有Windows系列,Linux系列 (适合开发和部署 用于1.服务器2.嵌入式设备(冰箱 洗衣机...)3.移动设备),Mac系列 (苹果电脑用的系统),Android系列(本质上也是Linux),IOS系列。
功能:
1.对上 要管理硬件设备
2.对下要给软件提供稳定的运行坏境
操作系统的定位结构:
系统调用:操作系统给应用程序提供的api 比如有个程序想操作一下硬件设备,就需要先通过系统调用,把操作命令高速给系统内核,内核调用驱动程序,进一步的操作硬件设备
操作系统内核:操作系统的核心功能
驱动程序:硬件设备,种类繁多,厂商各异 硬件厂商在开发硬件的同时回提供驱动 电脑装了对应驱动 才会让系统正确识别硬件(类似于手机充电转换口)
2.进程/任务
什么是进程/任务?
进程是操作系统对一个正在运行的程序的一种抽象,可以把进程看作程序的一次运行过程。 一个跑起来的程序就是一个“进程”,没运行起来的就不是进程 叫做“程序”。
Ctrl+Alt+Delete ->任务管理器 如图这里显示的则是电脑正在运行中的程序
每个进程都对应一些资源 cpu,内存,磁盘...进程是操作系统资源分配的基本单位,操作系统就需要管理很多进程,进程是一个重要的“软件资源” 是由操作系统内核负责管理的。如下图则是每一个进程 ,操作系统为其分配的计算机资源。
如何管理进程?
描述(PCB)+组织(双向链表)
描述:使用结构体来描述进程的属性特征 这个结构体称为PCB(进程控制块)
组织:通过双向链表,来把多个PCB串到一起
PCB(进程控制块)
描述进程的特征(pid,内存指针,文件描述符表,进程调度的属性):
1)pid :进程的身份标识符(数字类似于我们的学号)
2)内存指针:指向了自己的内存有哪些 ,意为自己的这个进程被分配了哪些资源
3)文件描述符表:硬盘上的文件,网卡等其他资源
4)进程调度的属性(进程状态,优先级,上下文,记账信息)
但是同一时刻有许多进程需要CPU,而CPU的数量有限,远远不够!而这些进程希望“同时运 行”,“分时复用” ,因此操作系统里面有一个重要的模块调度器 就负责让有限的CPU来调度执 行这么多的进程。
进程调度 本质上是要解决“狼多肉少“的问题,让大量的进程可以在少数的CPU上“同时” 运行。
因此 我们要了解两个概念 并发执行和并行执行
并行:微观上同一时刻,两个核心上的进程,就是同时执行的
并发:微观上,同一时刻,一个核心上只能运行一个进程,但是它能够对进程快速的进行切换
并行和并发是内核负责处理的,人是感知不到的,因此并行和并发通成为并发,只要进程之间运行切换的够快,宏观上就可以看作是独立的同时运行着多个进程(电灯闪烁频率高了人就感觉电灯是常亮的)
1>.进程状态:
就绪状态:随叫随到,进程随时准备好了去CPU上执行
运行状态:正在使用CPU
阻塞状态:短时间内无法到CPU上执行了,比如进程正在进行密集的IO操作,读写数据
2>优先级:
系统调度时,根据优先级来给进程安排时间,可能A的进程时间多,B的进程时间少这样。但是在创建进程的时候,也可以通过一些系统调度来干预优先级
3>上下文:
操作系统在进行进程切换的时候,就需要把进程执行的“中间状态”记录下来,保存好,下次这个进程再上CPU上运行的时候,就可以恢复上次的状态,好继续往下执行,“存档读档”上下文本质上就是你存档的内容 。
进程的上下文,就是CPU中的各个寄存器的值,CPU内置的存储数据的模块,保存的就是程序运行过程中的中间结果。
保存上下文,就是把这些CPU寄存器的值,记录保存到内存中
恢复上下文,就是把内存中的这些寄存器恢复回去
4>记账信息:
操作系统 统计每个进程在CPU上占用的时间和执行指令数目,根据这个来决定下一个阶段如何调度
进程的虚拟地址空间
引入虚拟地址空间,地址越界,就能即使发现
进程间通信
通过公用空间,来完成进程之间的数据交互
使用文件,使用网络