操作系统和计组的基本知识

在这里插入图片描述

cpu 基本组成

  1. pc 程序计数器,记录当前指令的地址,指令存在于内存当中,内存相当于一个大型byte数组,pc记录当前指令存在于内存中的哪个位置
  2. registers 暂时存储cpu计算需要的数据
  3. ALU 逻辑运算单元. 一次计算2+3 的流程
  • 内存中先存储着2和3
  • mov 指令把2 和 3 通过总线放到 寄存器 的不同存储单元中
  • ALU 读取 寄存器中的数据,进行计算,把结果写入另一个寄存器.
  • 最后把结果的寄存器放入内存中
  1. CU 控制单元
  2. MMU 内存管理单元
  3. cache

线程的切换

当线程切换的时候,cpu需要把 程序计数器寄存器 中的数据先存回内存,然后把下一个线程的内容读取进来, ALU才能进行计算,这是一个很消耗资源的事情.

缓存

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

操作系统

内核态 & 用户态

cpu分不同的指令级别.
linux 内核的指令级别是 ring 0 ,用户的指令是 ring 3.对于关键系统的访问,需要让内核来帮助调用,就是用户态和内核态的切换

进程 & 线程 & 携程 & 中断

  1. 进程和线程有什么区别
    进程是程序原先在硬盘上,被读取到内存中,拥有独立的内存空间,和系统资源.
    对于 linux操作系统来说,线程 就是一个普通的进程 只是和其他进程共享资源
  2. 协程
    现在jvm起的线程对应着操作系统的一个线程,属于重量级线程,上下文切换需要耗费很多资源.协程属于用户态的线程,是虚拟的,切换不需要经过操作系统的调用

进程

linux 分配资源的基本单位,进程描述符 PCB. 操作系统提供clone 函数创建进程
僵尸进程
父进程创建子进程后,会维护子进程的一个pcb结构,子进程退出,由父进程释放,如果父进程没有释放,就会变成一个僵尸进程
孤儿线程
子进程结束之前,父进程已经退出,由1号进程维护

中断

中断分成硬中断和软中断,其实就是打断正在执行的程序去执行其他的东西

内存管理

现代操作系统为了解决多个进程的内存问题: 1 内存不够用. 2 相互打扰

虚拟地址, 分页装入, 软硬件结合寻址

  1. 解决内存撑爆
    将硬盘上的程序分成 若干个4k大小的页 . 内存中也被拆分成 4k大小的容器. 在使用程序的时候,用到了哪一块区域,就把硬盘中对应的4k区域读取到内存中. 不会把全部的数据拷贝到内存中.
    举个例子
    用户点击了 qq.exe 程序, 内核知道qq程序已经被分成了6页,程序的入口是 第三页. 所以就只把第三页加载进内存. 在执行的过程中,发现第三页用到了第四页的内容,于是又把第四页从硬盘加载到内存中. 如果内存不够用了 LRU 算法淘汰一页,放入 swap 分区中
  2. 解决相互打扰问题
    虚拟内存. 程序中用到的地址空间都是虚拟出来的,这样就永远不能主动访问真是物理内存而影响到其他进程. 虚拟空间大小是 64位机器 2^64 . 站在虚拟内存的角度,进程独占整个内存+cpu.
    通过 os+ mmu 映射到真实物理内存.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值