操作系统OS(Operating System)

操作系统 OS(Operating System)

是一组做计算机资源管理的软件的统称

常用的操作系统 -> windows andrioid IOS Unix大家应该都有所了解

基础了解OS

  1. 对下,要管理各种硬件设备

  2. 对上,要给软件提供稳定的运行环境

  3. 某个软件想要操作某个硬件的话,此时就需要用你操作系统进行完成

  4. 功能非常多,其中最重要的就是进程管理

  5. 进程(process)/任务(task)

  6. .exe就是一个可运行文件(程序)->双击这个程序就会在系统中形成了一个进程(在任务管理器中可以看见很多进程)

计算机系统的分层视图

进程管理:

先提出几个问题

1.为什么要进行管理?

​ 当然是因为进程很多所以需要管理

2.进程和操作系统之间的关系是咋样的?

​ a. 进程的运行,需要从操作系统这里申请资源

​ b.进程是操作系统进行资源分配的基本单位

3.进程是啥样子的?

如图显示,进入页面的快捷键是 :Ctrl+Shift+Esc

在这里插入图片描述

对进程的使用:

  1. 描述这个进程:使用 结构体/类 把一个进程有哪些信息 ,表示出来
  2. 组织这些进程:使用一定的数据结构,把这些 结构体/对象,放到一起

进程的结构体中的属性:

进程的结构体:PCB(process control block)进程功能块,描述进程的结构体

1.pid

每个进程需要有一个唯一的身份标识 pid

2.内存指针

当前这个进程使用的内存是哪一部分->进程要跑起来就要消耗一定的硬件资源 比如内存空间

(进程运行的时候使用了哪些内存上的资源)

3.文件描述符表:

进程每次打开一个文件们就会产生一个文件描述符(标识这个被打开的文件) 一个进程可能会打开很多文件,对应了一组文件描述符,把这些文件描述符放到一个顺序表这样的结构里,就构成了文件描述表

(进程运行的时候使用了哪些硬盘上的资源)

文件:比如硬盘上的数据,往往就是以文件为单位进行整理的

CPU分配–进程调度(Process Scheduling )

这些属性都是辅助进行进程调度

了解CPU

  1. 程序运行全靠CPU,每个程序,相当于一组"二进制指令"的集合

  2. CPU核心数 我这是4核心8线程 就相当于4个人干8个人干的事 image-20230309141039015

    **并发:**同一时刻,两个核心,同时执行两个进程,此时这两进程就是并行执行

    **并行:**一个核心,先执行进程1,执行一会后,再去执行进程2,再执行一会后,再去执行进程3,此时只要这里切换的速度够快,看起来进程123都是同时执行的

这些进程都是操作系统控制CPU进行并发+并行来执行的统称为并发 (并发程度高的话就叫高并发)

进程调度

操作系统对CPU资源的分配,采用的是时间模式 —— 不同的进程在不同的时间段去使用 CPU 资源

  1. 进程状态

    进程的状态主要有两个:

    就绪态:该进程已经准备好了,随时可以上CPU执行

    阻塞态:该进程暂时无法上CPU执行

  2. 进程优先级

    进程之间的调度不一定是"公平"的,有的要优先调度

  3. 进程的上下文

    上下文,描述当前进程执行到哪里这样的"存档记录"

    进程在离开CPU的时候就要把当前运行的中间结果"存档"

    等到下次进程回来CPU上,在恢复之前的"存档",从上次的结果继续往后执行

    具体到进程,所谓的上下文具体指的就是进程运行过程中,CPU内部的一系列寄存器(寄存器有很多种,最典型的就是保存当前进程执行的中间结果,包括进程运行到哪一条指令)的值

    进程离开CPU就需要把这些寄存器的值保存到PCB的上下文字段中,这就叫存档

    进程喜爱新回来CPU再把PCB中的值给恢复到寄存器中,这就是读档

  4. 进程的记账信息

    统计了每个进程在CPU上执行了多久了

    可以作为调度的参考依据

组织pcb:

操作系统往往是采用双向链表这样的结构来组织pcb

  1. 创建一个进程,就是创建一个链表的节点
  2. 销毁一个进程,就是把链表的节点给删除了
  3. 遍历进程列表,就是遍历链表

内存分配–内存管理(memory Manage)

操作系统给进程分配的内存,是以"虚拟地址空间"的方式进行分配的

每个进程访问的内存地址,都不是真实的物理内存的地址(一个进程无法干预另一个进程的内存内容,操作系统的稳定性,每个进程都有自己的独立空间,进程的独立性)

进程间通信(Inter Process Communication)

​ 进程间之间需要进行交互,相互配合

  1. 如果每个进程可以直接访问物理内存,其实是没有隔离性,也就不许哟啊进程间通讯,进程1直接把算好的结果,写到进程2中的内存中就行

  2. 所谓进程间的通讯,就是再隔离性的前提下,找一个公共的空间,让两个进程借助这个区域来完成数据交换

​ (在隔离性的前提下做了一个小小的妥协)

  1. 操作系统提供的进程间通信的具体实现方式有很多种,管道,消息队列, 公共内存,信号

  2. 在java中主要使用文件,socket,这两种方式进行进程间的通信

个进程借助这个区域来完成数据交换

​ (在隔离性的前提下做了一个小小的妥协)

  1. 操作系统提供的进程间通信的具体实现方式有很多种,管道,消息队列, 公共内存,信号

  2. 在java中主要使用文件,socket,这两种方式进行进程间的通信

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值