一、计算机的基本组成结构
二、进程
一个跑起来的程序叫进程 .(没跑起来就不算)
打开任务管理器可查看进程:
进程(process) 也叫任务(task)
所以说上面的任务管理器也可以叫做进程管理器.
进程是一个重要的"软件资源".,是由操作系统内核负责管理的.(组织(用数据结果将多个单位串起来)+描述(属性特征))
描述:使用结构体(C语言的结构体)来描述进程属性.
而描述的这个结构体被称为PCB(进程代码块)然后通过双向链表组织起来.
PCB里的进程的特征:
1. pid:进程的身份标识.
2.内存指针:指向存储内存
3.文件描述表:硬盘上的文件等其他资源.
在一台电脑中同时运行的进程有上百个,但CPU的核心却只有16个(分电脑配置此电脑是8核16线程的),那要如何解决"狼多肉少"的情况呢?
所以说这些进程希望能够"同时运行"和"分时复用".所以说就引入了并行、并发.
并行:微观上,同一时刻两个核心上的进程同时执行.
并发:微观上,同一时刻一个核心上只能运行一个线程,但它能够对进程快速的进行切换.比如说运行一下音乐,在运行一下浏览器,再运行一下画图板,最快能够做到2.5GHz(每秒25亿条命令),宏观上感知不到.
这样就能让有限的CPU去执行尽量多的进程了.
4.进程调度相关的属性:
1)进程的状态:
就绪状态:随叫随到,可以随时取CPU上执行.
运行状态:正在CPU上执行.
阻塞状态:短时间无法到CPU上执行,比如进程在进行密集的IO操作,读写数据.
2)优先级
进程运行的优先级
3)上下文
操作系统在进行进程切换的时候,需要把进程执行的"中间状态"记录好,保存.下次这个进程再在CPU上运行的时候,就可以恢复上次的状态好继续执行.
也就是"寄存器"要干的事情.
4)记账信息
操作系统统计每个进程在CPU上执行的指令条数和执行时间,根据这个来执行下一阶段的调度.
虚拟地址空间:
为了保证程序与程序之间的"隔离性",就是说一个程序出错(比如浏览器)不会影响到其他程序.
作用就是创建一个虚拟的地址空间让进程运行在里面然后再通过MMU硬件设备映射到真正的内存条中.
虚拟地址就是为了进程与进程之间互不影响.
然后就是进程间通信了.
再程序的执行过程中,难免会碰到进程之间需要交换数据的情况,但进程之间又相对隔离,怎么解决呢?就整了一个"公共空间"用来信息交换(主要是基于文件,基于网络)