操作系统与进程简介

文章目录

  • 门电路
  • 操作系统
    • 操作系统简介
    • 进程
      • 操作系统如何管理进程:
    • 内存管理(分配)
      • 虚拟地址
    • 进程间交互(通信)

门电路

  1. cup由一些基本的门电路组成
  2. 最基本的门电路有与门, 或门, 非门, 由这些门组成了异或门, 再由异或门组成了半加器和全加器, 再由全加器组成加法器, 有了加法器就可以实现减乘除.
  3. 与或非异或门都是只能对一个比特位进行运算, 半加器可以对两个比特位进行运算, 全加器可以对三个比特位进行运算, 加法器就可以针对两个用二进制表示的数进行计算了

操作系统

操作系统简介

操作系统是一个管理软件, 对下管理硬件设备, 对上要给计算机软件运行提供良好环境
操作系统与进程简介_第1张图片

  1. 硬件设备: cpu(控制器, 计算器), 内存, 输入输出设备等
  2. 驱动程序: 硬件厂商除了提供硬件, 还会提供一个驱动程序, 只有给计算机安装了驱动程序, 计算机才能正确识别该硬件
  3. 系统内核: 操作系统, 向下管理硬件设备,向上为软件运行提供环境
  4. 系统调用: 操作系统为应用程序提供的api接口, 程序想要操作硬件设备, 首先通过系统调用将程序指令告诉操作系统内核, 操作系统内核通过驱动程序去操作硬件
  5. 应用程序: app

进程

进程是操作系统分配系统资源的基本单位, 简单来说, 进程就是整在运行的程序, 进程又叫任务
进程是一个重要的系统资源
CTRL+alt+delete 可调用任务管理器
由进程是一个重要的系统资源, 而系统资源由操作系统内核管理, 则可知进程由操作系统内核来进行管理

操作系统如何管理进程:

操作系统对进程管理, 首先要先描述进程, 然后组织进程
描诉进程: 通过一个结构体来描述进程, 这个结构体又被称为PCB, PCB是进程控制块
组织进程: 将多个PCB串成一个双向链表, 进程的创建其实是创建一个PCB, 然后将这个PCB插入到链表中. 进程的销毁是将链表上的一个PCB删除

使用结构体描述PCB结构属性:
1. pid: 进程的唯一标识符
2. 内存指针: 指向所占用的内存资源
3. 文件描述符表: 除内存资源外的其他资源, 硬盘上的文件, 键盘等

  • 在系统资源分配时, cpu的分配最难, 因为即使现如今所用的电脑基本上都是8核心16线程的cpu(相当于16个cpu), 但是进程有上百个, 还是捉襟见肘
    操作系统与进程简介_第2张图片
    在这里插入图片描述针对cpu不够用的情况, 为了实现"进程同时运行", 采用了"分时复用"的方法, 分时复用中有两个概念, 并行与并发;
    并行 : 微观上同一时刻, 两个进程由两个核心同时执行
    并发 : 微观上同一时刻, 两个进程并不是同时执行, 而是在一个核心上交替执行, 由cpu主频3.2GHz(cpu一秒可以执行32亿个指令), 就可以知道当快速交替执行进程时, 其时间间隔是非常小, 小到人察觉不到的, 所以宏观上多个进程还是"同时执行的".
    采用并行+并发的方式来解决cpu不够用的情况, 关于哪些线程并行, 哪些线程并发, 是由操作系统内核中的一个非常重要的调度器来进行安排的, 对于程序员来说, 并行合并发统称为并发

4. 进程调度(cpu分配)的相关属性:

(1)进程的状态:

  1. 运行状态: 正在cpu上执行
  2. 就绪状态: 随时可以响应cpu, 从而执行该进程
  3. 阻塞状态: 短时间内无法响应cpu的执行号令(并不是所有指令都是要在cpu上执行, 如读取硬件数据)

(2)进程调度的优先级
(3)上下文: 在cpu进行进行进程切换时, 记录执行此进程时的中间状态(存储在寄存器中的数据), 并保存到内存中(PCB)中, 当下阶段再次执行此进程时, 再将数据加载到寄存器中, 根据中间状态再继续执行
(4)记账信息: 每隔一段时间, 根据各个进程在cpu上执行时所用的时间和指令个数, 再决定下一阶段如何调度

内存管理(分配)

虚拟地址

  1. 为了避免各个进程互相干扰, 引入了虚拟地址
  2. 在PCB属性中的内存指针, 其实代码中指针所指向的并不是真实的物理地址, 而是一个虚拟地址, 这个虚拟地址通过集成在cpu上的MMU硬件设备将虚拟地址转换成真实的物理地址(当进程中出现越界访问时, MMU会无法识别虚拟地址, 从而返回报错信息)
  3. 给每块进程执行时所分配的内存资源肯定是不一样的, 但是在执行过程中, 如果出了bug, 内存指针所指向的地址发生了变化造成了越界访问,而刚好访问到另一个进程的内存空间时, 那么另一个进程就势必会收到影响, 甚至崩溃. 因此引入了虚拟地址

进程间交互(通信)

  1. 由虚拟地址可知, 进程之间要进行一个隔离, 从而避免在执行过程中相互干扰
  2. 但是由于通常进程之间也是要交互数据的,也就是进程之间要进行通信
  3. 为了完成进程的交互, 就需要有一片两个进行都能访问到的公共空间, 在公共空间里完成数据交互
  4. 有两种方法可以为两进程提供公共空间, 一是基于文件, 二是基于网卡(文件和网卡需两进程都能访问)

你可能感兴趣的:(操作系统,windows,软件工程)