阅读 369

进程前戏 - 操作系统介绍

这是我参与更文挑战的第9天,活动详情查看: 更文挑战

微信公众号搜索【程序媛小庄】,关注半路出家的程序媛如何靠python开发养家糊口~

前言

进程是计算机上正在运行的程序的抽象,比如一个正在运行的QQ就是一个进程。进程概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一。因此想要了解进程,必须先了解操作系统。

操作系统简介

开发人员无法将计算机的每个硬件都了解的很细致,管理计算机上的硬件是非常繁琐的工作,而操作系统就可以帮助做这项繁琐的工作,我们在介绍计算机基础的时候也说到了,操作系统官方说法就是用来协调控制和管理计算机硬件与应用程序的一个控制程序。

操作的系统到底是用来干嘛的呢?大概可以分为两方面:

1-控制计算机硬件的基本运行,当我们双击运行程序的时候是需要CPU的,而这位大哥除了操作系统外,其他软件程序一点面子都不给。

2-把硬件运行的复杂操作封装成简单的功能给上层程序(QQ、WeChat等)使用,当我们使用这些程序的时候,我们不用去关注计算机硬件层面到底是怎么运行的,只需要愉快的和小哥哥小姐姐聊天就好了。

操作系统发展历史

第一代计算机:真空管和穿孔卡片

产生背景

第一代之前人类是想用机械取代人力,第一代计算机的产生是计算机由机械时代进入电子时代的标志,从Babbage失败之后一直到第二次世界大战,数字计算机的建造几乎没有什么进展,第二次世界大战刺激了有关计算机研究的爆炸性进展。在这个时期,同一个小组里的工程师们,设计、建造、编程、操作及维护同一台机器,所有的程序设计是用纯粹的机器语言编写的,甚至更糟糕,需要通过成千上万根电缆接到插件板上连成电路来控制机器的基本功能。没有程序设计语言(汇编也没有),操作系统则是从来都没听说过。使用机器的过程更加原始。

特点

没有操作系统的概念,所有的程序设计都是直接操控硬件。

工作过程

科研人员预约时间,然后拿着他的插件版到机房里,将自己的插件板接到计算机里,这几个小时内他独享整个计算机资源,后面的一批人都得等着(两万多个真空管经常会有被烧坏的情况出现)。后来出现了穿孔卡片,可以将程序写在卡片上,然后读入机而不用插件板。

优点 & 缺点

优点:在申请的时间段内独享整个资源,可以即时地调试自己的程序(有bug可以立刻处理)

缺点:浪费计算机资源,一个时间段内只有一个人用。同一时刻只有一个程序在内存中,被cpu调用执行,比方说10个程序的执行,是串行的

第二代计算机:晶体管和批处理系统

产生背景

由于当时的计算机非常昂贵,自认很自然的想办法减少机时的浪费,通常采用的方法就是批处理系统。

特点

设计人员、生产人员、操作人员、程序人员和维护人员直接有了明确的分工,计算机被锁在专用空调房间中,由专业操作人员运行,这便是‘大型机’。并且有了操作系统的概念,并且有了编程语言,FORTRAN语言或汇编语言,写到纸上,然后穿孔打成卡片,再讲卡片盒带到输入室,交给操作员,然后等待输出接口。

第二代计算机解决了第一代计算机的问题,将一堆人的输入攒起来一次性输入,将这些程序进行顺序计算,然后将不同的程序的执行结果一次性输出。

工作过程

img

优点 & 缺点

优点:批处理,节省了机时。

缺点:整个流程都需要人的参与控制,计算的过程仍然是顺序执行,开发人员原来独享一段时间的计算机,现在必须被统一规划到一批作业中,等待结果和重新调试的过程都需要等同批次的其他程序都运作完才可以,这极大的影响了程序的开发效率,无法及时调试程序。

第三代计算机:集成电路芯片和多道程序设计

产生背景

20世纪60年代初期,大多数计算机厂商都有两条完全不兼容的生产线。一条是面向字的:大型的科学计算机,如IBM 7094,主要用于科学计算和工程计算;另外一条是面向字符的:商用计算机,主要用于银行和保险公司从事磁带归档和打印服务。

IBM公司试图通过引入system/360系列来同时满足科学计算和商业计算,360系列低档机与1401相当,高档机比7094功能强很多,不同的性能卖不同的价格。360是第一个采用了(小规模)芯片(集成电路)的主流机型,与采用晶体管的第二代计算机相比,性价比有了很大的提高。这些计算机的后代仍在大型的计算机中心里使用,此乃现在服务器的前身,这些服务器每秒处理不小于千次的请求。

特点

第三代计算机解决了第二代计算机的问题,卡片被拿到机房后能够很快的将作业从卡片读入磁盘,于是任何时刻当一个作业结束时,操作系统就能将一个作业从磁带读出,装进空出来的内存区域运行,同时的外部设备联机操作:SPOOLING,该技术同时用于输出。当采用了这种技术后,就不在需要IBM1401机了,也不必将磁带搬来搬去了。

并且,第三代计算机的操作系统广泛应用了第二代计算机的操作系统没有的关键技术:多道技术

多道技术

cpu在执行一个任务的过程中,若需要操作硬盘,则发送操作硬盘的指令,指令一旦发出,硬盘上的机械手臂滑动读取数据到内存中。 这一段时间,cpu需要等待,时间可能很短,但对于cpu来说已经很长很长,长到可以让cpu做很多其他的任务。 如果我们让cpu在这段时间内切换到去做其他的任务,这样cpu不就充分利用了吗。这正是多道技术产生的技术背景。

多道技术中的多道指的是多个程序,多道技术的实现是为了解决多个程序竞争或者说共享同一个资源(比如cpu)的有序调度问题,解决方式即多路复用,多路复用分为时间上的复用和空间上的复用。

空间上的复用:多个程序共用一套计算机硬件(QQ 网易云音乐)

时间上的复用:当一个程序在等待I/O时,另一个程序可以使用cpu,如果内存中可以同时存放足够多的作业,则cpu的利用率可以接近100%,比如洗衣服:30min,做饭50min,烧水30min,采用多道技术只需要任务时长最长的所需时间,无需所有时间之和那么久。

当操作系统采用了多道技术后,CPU就可以精致进程的切换:

1-当一个程序遇到IO操作的时候,操作系统会剥夺该程序的CPU执行权限。提高了CPU的利用率,并且不影响程序的执行效率。

2-但是当一个程序长时间占用CPU的时候,操作系统也会剥夺该程序的CPU执行权限,这降低了程序的执行效率(原本运行时间+切换时间)

第四代操作系统:个人计算机

即使可以利用的cpu只有一个(早期的计算机确实如此),也能保证支持(伪)并发的能力。将一个单独的cpu变成多个虚拟的cpu(多道技术:时间多路复用和空间多路复用+硬件上支持隔离),没有进程的抽象,现代计算机将不复存在。

总结

操作系统的作用

控制计算机硬件的基本运行;

把硬件运行的复杂操作封装成简单的功能给上层程序(QQ、WeChat等)使用。

多道技术

针对单核CPU实现并发,现在的主机一般是多核,那么每个核都会利用多道技术。有4个cpu,运行于cpu1的某个程序遇到io阻塞,会等到io结束再重新调度,会被调度到4个cpu中的任意一个,具体由操作系统调度算法决定。遇到io会切换CPU,占用cpu时间过长也会切换CPU,核心在于切换之前将进程的状态保存下来,这样才能保证下次切换回来时,能基于上次切走的位置继续运行

结语

文章首发于微信公众号程序媛小庄,同步于掘金知乎

码字不易,转载请说明出处,走过路过的小伙伴们伸出可爱的小指头点个赞再走吧(╹▽╹)

操作系统.png

文章分类
后端
文章标签