Loading

1-操作系统简介

操作系统发展史

第一代计算机:人参与的很多,计算机资源大量浪费,程序一旦出错,人要现场改,计算机闲置,其他人也不能操作。

第二代计算机:人参与的工作减少,资源得到更多的利用,程序写在磁带上,一次把一个程序读到内存,执行完一个程序才能执行下一个程序--串行。

      出现批处理系统概念,提升利用计算机资源,即使运行是一个程序出错,会立刻执行下一个程序,人不能当场排错,计算机效率提升。

      缺点:人搬运设备,要等待运行结果。

第三代计算机:电子元件连接在一起,不需要人搬运,开发了新的分时操作系统,多用户多任务。

      当时的理念是多个用户同时操作计算机,对于现在而言意义不大,因为现在有网络,不需要几个人拿着鼠标键盘同时连接到计算机。

      多道(多个程序)技术----并发

        1空间上的复用:运行程序前,将多个程序加载到内存,共享内存空间,为时间上的复用做准备。

                空间复用的前提,内存足够大、进程间物理隔离(最开始硬件层面技术达不到,直到后来...)。

                如果内存不隔离,会丧失稳定性,一旦关闭程序释放内存,多个进程混合在一起,可能其他进程的内存也会被释放。

                且还会造成数据不安全,一旦一个程序由bug,别人攻击此程序,就可以看到内存中所有的数据。

        2时间上的复用:站在cpu的角度假设干了一天活,这一天里一段时间干任务1,一段时间干任务2以此类推,一段时间叫时间片

               若一天都在运行一个程序,就成串行了。

               cpu在多个进程间不停切换,切的足够快让使用者无法感知,就好像在同时运行----并发。

               多个任务复用cpu时间片,遇到IO切,占用cpu时间过长切。

一个程序在IO,cpu切换到其他进程,让IO的时间cpu不空闲,达到时间复用,可以提高cpu执行效率。---------IO密集型

一个程序占用cpu时间过长,os拿回cpu执行权,雨露均沾让其他进行也可以执行,这并不会提高cpu执行效率,反而降低了效率。-----------计算密集型

多道技术的核心:cpu的切换受os控制,至于效率问题,os有自己的算法,会综合IO密集与计算密集的场景,背后有算法的支撑,尽可能的折中。

分时操作系统:多用户多任务,在多道基础的基础上,实现多个任务的并发运行。

那个时代想着给每个连接到此终端的用户,发个虚拟终端就可以全部连接到一台电脑上,以失败告终,为linux的成功奠定了基础。

  

os的本质

归根结底多道技术是os层面的技术,大神程序员早就处理好了,站在巨人的肩膀起飞。

os是一个程序,位于硬件与上层应用间,负责协调、管理

进程与线程

进程:申请内存空间,拉入程序输入,程序执行期间产生的数据管理,以及最后内存的回收,报错程序运行与资源管理。

线程:在进程中划分出来的更细粒度,只涉及到程序执行的流水线----就是指代码的运行,不包括涉及的资源申请释放等过程。

进程是个资源单位,线程是个执行单位,一个进程可以有多个线程,多个线程间数据共享。

cpu运行的是线程,不负责资源问题。

进程三种状态

运行、就绪、阻塞

运行:获得cpu时间片,在执行程序。

就绪:占用cpu时间过长,或更高优先级的进程来了,os将cpu时间片分给了他,你进入就绪,等待下次os分配cpu时间片

阻塞:任务运行态时遇到IO不占cpu,硬盘在工作或者其他IO,此时进程进入阻塞,IO结束只能进入就绪,等待分配cpu时间片。

背后os的分配逻辑对应着算法,用汇编语言写的。

效率最高:一直握着cpu时间片不撒手,一直执行此线程,但os不允许这样。唯一能控制的就是阻塞态,尽可能减少IO操作,让就绪态尽可能的多,得到cpu时间片就可以运行,否则cpu时间片分配给你,你却处于阻塞状态,那么就丧失了执行机会。

posted @ 2021-06-06 22:59  浅忆尘  阅读(85)  评论(0)    收藏  举报