1.计算机的组成
计算机实际上由cpu,存储器,输入设备输出设备组成
1.cpu
cpu实际上是整个计算机的核心进行着复杂的运算。cpu的最小执行单元是指令。
2.存储器
计算机中的存储器包括内存和外存 内存速度快空间小掉电后数据丢失,外存速度慢,空间大,成本低,掉电后数据不丢失。
2.操作系统
日常生活中常见的操作系统包括windows linnux等。这些操作系统的作用实际上是对下管理所有的硬件设备,对上给软件提供稳定的运行环境。通常硬件厂商在开发硬件的时候都会配备一个驱动系统,让操作系统驱动系统完成对硬件设施的管理和使用。
操作系统=内核+配套的应用设施。
内核:操作系统中最核心的功能,硬件的驱动程序都在内核中执行,内核需要给给应用提供支持。
3.进程的概念
实际上一个已经跑起来的程序就叫做进程,进程中有很多线程,多个线程可以共用同一个进程的资源,每个进程想要进行都得消耗一定的系统资源(硬件资源)。
*****进程是系统资源分配的基本单位。
*****线程是调度执行的基本单位。
pcb
系统中有一个专门的结构体(用c语言c++写的)描述进程属性。
这个结构体被称为进程控制块pcb
一个进程可以用一个或者多个pcb表示。
pcb内部的之间的相互结构实际上是以链表的形式存在的(双向链表),创建新的链表也就是把pcb创建放入双向链表中,销毁进程也就是把pcb把pcb从链表中删除并且释放,展示进程链表就是遍历链表每个节点。
深入了解pcb的属性
pcb是一个巨大的结构体
1.pcb的身份标识
每个pcb都有身份表示也就是pid。
2.内存指针
每个进程在运行的时候都会分配内存空间
这个进程内存空间具体在哪里,内存空间中有哪些部分,每个部分是干啥的,有一组指针来划分。最典型的就是内存空间需要区域存储执行的指令以及运行时候产生的数据。
3.文件描述表 类似于顺序表这样的数据结构,有很多元素和文件有关,一个进程需要涉及到硬盘操作就要用文件的形式操作,实际上就是描述了进程持有的硬盘资源是什么样的
早期的操作系统实际上称之为单任务操作系统,同一时刻只有一个进程能进行,运行下一个进程就会退出上一个。
并行的概念:
如果两个进程同时在两个cpu核心上,微观上也是同时执行,这个情况称之为并行
一个cpu核心,通过快速轮转调度的方式,执行多个进程,宏观上是轮转执行,微观上有先后,这个称之为并发。
但是并发和并行实际上并不会感受的到,也就是从编程角度来说,一般用并发来代指并行和并发
pcb的属性如下
1.进程的状态
进程的状态分为就绪和阻塞等等
2.进程的优先级
操作系统在调度多个进程的时候非一视同仁,会给某些进程更高的优先级,优先调度
3.进程的上下文
进程离开cpu的时候,需要保存现场,把当前cpu的寄存器的状态都保存到内存中,等下次进程再回到cpu上面执行的时候就会把保存的这些寄存器的值回复回去
4.进程的记账信息
通过优先机制,对不同的进程分配了不同的权重资源
有的时候可能会出现极端情况,cpu将某个资源都给某个进程,其他进程一点没有。
实际上记账信息就是记录某个进程使用了多久,让操作系统对其进行调度和分配。