一、操作系统。
操作系统通俗来讲是一个搞管理的软件,它是连接软硬件的桥梁。操作系统对上要为应用程序提供一个稳定的运行环境,对下要管理各种硬件设备。
二、进程。
进程:运行起来的可执行程序叫做进程。故进程也叫作可执行程序的实例。
进程是系统分配的基本单位。
三、进程的管理和描述。
一个系统运行时会产生成千上万个进程,而操作系统对上要为应用程序提供一个稳定的运行环境,故对进程的管理就显得尤为重要。
1、进程的管理。
1)先描述。
使用一个称之为PCB的结构体来描述一个进程各个方面的属性。
PCB包含的属性。
1、PID。
表示一个进程的身份标识。每个进程的PID一定是不同的。
2、内存指针。
表示该进程对应的内存资源是什么样子的。
内存资源:内存资源主要就是指从exe可执行文件中加载过来的数据和指令(也就是程序员编写的代码的逻辑)。
3、文件描述符表。
描述这个进程具体操作哪些硬件资源。
文件描述符表中的“文件”其实是操作系统将硬件抽象成一个个文件,程序并非直接操作硬件,而是操作一个个文件,也就是硬盘上的数据。
4、进程的状态。
最主要的两个状态:就绪、阻塞。
5、进程的优先级。
系统根据优先级的高低来分配资源。
6、进程的上下文。
多个程序同时运行,进程是轮流在CPU上进行处理的,一个程序一次运行不完,要保证他下一次在CPU上运行是从上一次截止的位置开始运行。
7、进程的记账信息。
防止一个进程抢占CPU的时间过长。
通俗来说就是,当你玩游戏的时候也可有收到微信消息。
2)后组织。
使用双向链表将多个PCB结构体串起来。
四、虚拟地址空间
为了防止多个进程运行时进程与进程间相互干扰,特提出虚拟地址空间。
当多个进程同时运行时,如果一个进程出现bug,那他就很有可能去抢占别的正常运行进程的真实内存空间,进而对整个系统的稳定性造成很大的影响。
虚拟地址也就成为了代码和真实内存地址之间桥梁。代码上进行地址操作时只能访问虚拟地址,虚拟地址又映射到真实的内存地址之上,由此进行代码在内存地址上的操作。
当一个进程出现bug时,虚拟地址空间可以将这个非法操作局限在该进程的内部,而不会影响到整个系统,使进程具有隔离性。