初识操作系统


前言

写算法的时候我只关心逻辑、语句的正确与否,但没有探索过计算机为什么可以实现这些程序的功能。计算机专业的同学应该都知道这是由操作系统(OS)协助完成的。
那什么是OS?OS的作用和特点究竟是什么呢?

我用这篇博客记录下自己对于操作系统的初步理解,它是一个更底层的东西。


一、操作系统起源

操作系统(即OS)出现的原因是计算机的发展以及人们对于效率的追求。

1940s

1940s出现了世界上第一台可工作的数字计算机。此时,程序员想要在计算机上运行代码,需要在卡片上打孔来体现程序的内容,再将卡片送入计算机,获得运行结果。所有的计算问题都是简单的数字运算,比如制作余弦表。
在这个阶段没有程序设计语言,更没有OS的概念。

1950s

此时,计算机可以被成批地生产并销售,它可以长时间运行,完成有用的工作。
专业操作计算机的人会拿着人们交给他的一盒程序卡片,送入计算机,并收集输出结果。为了提高效率,人们提出了批处理系统

在这里插入图片描述

其思想是让一台计算机集中处理读卡的任务,将读出程序送入执行计算的机子,获得这些程序的输出到磁带上(并不打印)。最后由操作员将输出磁带拿到另一个计算机上,集中打印结果。

中间那台执行计算的机子在处理这一批程序时,需要用到一个特殊的程序,来指示它如何处理。这个特殊的程序就是OS的前身!

1960s

这个时候,计算机已经采用了集成电路芯片,拥有更强的计算能力,这带来一个问题:
计算机在计算时很快,但打印结果很慢。如果一个程序要等到计算并打印完成后,才能开启下一个程序,就会浪费大量的计算资源和时间。因此提出了CPU的分时共享。
这时出现了可使用的OS,包括进程、中断等名词。

1970s至今

随着PC机、笔记本、智能手机的发展,OS也越来越多样和完善。

简而言之,操作系统的诞生是为了解决多个程序运行的需求。

二、操作系统的功能

1.提供简洁的使用接口

OS其实是为程序员提供了一个更简洁的接口,来帮助我们方便地使用计算机。OS替我们去直接操作计算机的硬件,比如文件的读取/存储等,我们不需要知道内部经过怎样复杂的流程(文件读取这一个抽象操作,实际上需要对电脑的硬件如磁盘,进行多步复杂操作才能完成),才能将内容存到硬件上,而是直接调用一个读写API就可以保任务完成。

比如我们可以通过双击文件就可以将其打开,这就是OS提供给我们的抽象操作。

也就是说OS是对计算机硬件操作的抽象表示,使得用户方便使用计算机。

我们使用的Windows系统就是一种操作系统,常用的OS还包括Unix、Linux、安卓、鸿蒙等。如果没有这些系统,我们就无法在电脑上运行应用程序,也无法进入平时我们开机后看到的桌面。

在这里插入图片描述

OS在计算机中的位置可以表示成:

在这里插入图片描述

OS是处在应用程序与硬件之间的桥梁,我们一般的操作均在用户态,无法对内核态进行修改。

补充:应用程序就是一个普通文件,不过是ELF等格式的可执行文件。它包括二进制代码和所需数据,也可以进行查看、修改等操作。

用户接口程序是我们和操作系统进行交互时使用的程序,它不是OS的一部分。我们一般使用的用户接口程序包括shell和GUI。shell是基于文本的,如命令行操作,GUI是图形用户界面,也就是我们常使用的图标等可视化的标志。

2.资源分配和调度

OS的另一个重要功能是对时间、空间资源的分配

时分复用

由于CPU计算速度很快,为了避免使其出现较长时间的空闲,我们希望多个程序(也就是”进程“)同时在CPU上运行。不过CPU在一个时间点上只能运行一个程序,因此OS会分配CPU的时间给各个程序,使得程序不断交替在CPU上运行。程序之间交替的速度足够快,就使得每一个程序看起来就像是独占了CPU资源一样。

比如我们在电脑上同时运行QQ和微信,这两个应用程序就时在CPU上不断地交替运行,但我们在使用时不会感觉到哪个应用有卡顿。

空分复用

空间的分配是指将每个进程所需的数据全部存储在内存中,方便程序在CPU上运行时调用内存中数据。OS需要对各个进程分配内存资源,实现空分复用。

同样,OS也会为不同用户分配磁盘的存储空间。

三、操作系统的特征

并发性

指计算机中同时存在多个同时运行的程序,他们占用CPU的时间需要OS管理和调度。
注意:并发与并行的区别,如下图

在这里插入图片描述
图源小林coding公众号
并发指多个进程可以无序执行;并行指多个进程可以同时进行,需要多核CPU。

共享性

不同进程可同时访问一个文件;不同进程对于内存等资源是互斥共享的,因为要保证进程间相互隔离,互不干扰。

虚拟性

该性质是指通过使用VMs虚拟机,我们可以将一台机器虚拟成多台机器,让每个用户都觉得有一个计算机是单独为他服务的。
虚拟机运行在OS之下,硬件之上。通过VMM(虚拟机监视器),可以实现多个OS共享一台计算机的硬件资源。比如我们可以在Win10系统下再安装Linux系统的虚拟机。

异步性

由于各个程序在CPU上交替运行,因此每个程序运行时会”走走停停“,推进速度是不可知的,这体现了进程的异步性。
但是只要运行环境相同,OS就必须保证程序的运行结果也是相同的。

同步:一个任务结束之后,才能开始下一个任务。
异步:任务可以交替进行,无需傻傻等待。


总结

简单来说,操作系统是对计算机硬件的复杂操作的抽象表示,方便用户通过简单代码即可完成对硬件的复杂控制。
它具有分配CPU运行时间及存储空间的功能,具有并发性、共享性、虚拟性以及异步性。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值