操作系统(一)

定义

一种软件,对上是用户,对下是计算机硬件。对上管程序(QQ),对下管硬件。
在这里插入图片描述

主要做什么

管理硬件,管理软件(各种各样的进程)
在这里插入图片描述

Linux Kernel

这里讲的所有操作系统都是Linux,包括鸿蒙、安卓都是Linux操作系统,那些闭源的操作系统不研究。
kernel几个作用

  • cpu调度
  • 内存管理
  • 文件系统
  • 应用管理进程调度
  • 中断处理设备驱动

宏内核:kenel+cpu调度+内存管理+文件系统+进程调度+中断处理,合起来叫宏内核。平时接触的windws、linux都属于这种。
微内核:kenel只负责进程调度,其他四大块是分布式的(处于不同的芯片上)。鸿蒙属于这种。弹性部署,四大块可以作为插件嵌入内核kernel。用户要访问文件系统,过程是:用户-kernel-文件系统-kernel-用户。
缺点:运行速度低,所有东西都要经过kernel转手。
优点:kernel非常小,可以灵活部署,灵活拆装。不同等级都可以部署到kernel上。
在这里插入图片描述

操作系统启动过程

在这里插入图片描述
启动:按下开机键以后,通电后,主板通电,主板上有一块儿芯片,叫bios[basic input output system],这块儿芯片里面有一段写死的程序,UEFI就是升级版本的Bios。先检查硬件,内存条等等。。硬件检查没问题后,加载bootLoader程序到内存,bootLoader(就是可以选择加载哪个系统的程序),放在MBR里,bootLoader执行以后,操作系统就执行了。
Cmos:场景:设置硬盘启动还是U盘启动,设置以后,下次默认启动。纪录这些信息的是一个芯片叫cmos,它的供电是靠一个专门的3伏电池。
操作系统是安装在硬盘上的,运行到内存掌管整个电脑,Bios功不可没。

中断

硬中断:硬件和操作系统打交道是通过中断进行的。当操作系统收到中断信号后会查中断处理表,看看每种硬件(键盘)对应的程序,然后去执行。
软中断:只有一个号0x80

内核态、用户态

dos最简单的操作系统,允许应用程序直接访问硬件,比较危险。现在屏蔽掉了。无内核态用户态。
内核态可以直接访问内存、进程。而用户态无法直接访问内存,必须经过内核态。
权限等级:0[内核态]123[用户态],Linux只有0、3这两个级别。

程序、进程、线程、纤程

在这里插入图片描述
qq双击三次,启动了三个进程(放到内存里开始执行,cpu开始执行它的指令了),这个进程里好多工作并行进行的(显示ui,接收网络传输,存盘)通过线程来执行,线程里并行进行的叫纤程或者协程。
进程线程区别:进程分配资源的单位,线程执行单位。
启动进程会分配内存空间(虚拟内存映射物理内存),线程共享进程的内存空间,是不会分配内存空间的。所以,分配资源按照进程来,真正执行按照线程来。

纤程

在这里插入图片描述
cpu执行一段程序的时候,就是执行线程,线程是执行的基本单位。
在这里插入图片描述
寄存器:PC/CSIP,可以纪录执行到哪条指令了。
程序的本质:指令+数据
所以程序的本质,就是CPU找到第一条指令,不断的从内存中读取指令,拿到CPU做计算,计算完了以后,把它放回去。再进行下一条指令,一直到最后。
在这里插入图片描述

  • 每次起一个线程,都要经过操作系统,很重量级的。
  • JVM启动线程是用户态,得通过内核态操作系统(老大)开启线程。
  • 系统可以启动总线程数是有限的。
  • JVM启动一个线程,线程相关的数据结构(执行到哪条指令了。。。)都要保存起来,前前后后大概需要内存1M左右。
  • 在JVM内存创建线程,不惊动操作系统,模拟线程出来。(线程执行的时候就是一些寄存器的信息PC+堆栈的信息就能保留线程的执行信息执行过程)所以PC+Stack就能模拟线程出来。用户级别的线程。
  • 纤程:线程中的线程。/协程/绿色线程
  • 所以:JVM启动线程是要经过os的,但是通过JVM自己的堆栈去模拟线程,是轻量级的,只要你有内存就可以创建很多。一万个线程无法想象,一万个纤程没问题。
  • JDK14将来会支持纤程。golang、kotlin支持纤程(牛就牛在这儿)
  • 特定情况下,纤程比线程效率高。例如做一万次计算

在这里插入图片描述

  • 为何内核态效率比较低呢?线程比纤程效率低呢?
    在这里插入图片描述
    related
    在这里插入图片描述
    内存管理:
    在这里插入图片描述
    内存映射:(进程先分配的是虚拟内存如何映射成为了物理内存?)在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值