为何要有操作系统?

首先要说明一下操作系统是什么?

操作系统是协调、管理、控制计算机硬件和为应用程序提供接口的控制软件,操作系统向下连接硬件,向上承载应用程序。

由于硬件不论种类还是工作流程都是繁杂的,程序员无法对所有的硬件极其工作流程都详细掌握,所以需要一种系统软件来对硬件进行统筹管理,操作系统可以完成程序员无法搞定的驱使硬件工作的操作、能够统筹管理硬件资源进行共享,使人们方便的使用硬件资源。

操作系统的位置

操作系统在本质上也是软件(系统软件),但是区别于普通应用软件,操作系统能够直接管理计算机硬件资源,操作系统由系统调用和内核两部分构成。

操作系统整体位于计算机硬件和应用程序之间,内核部分向下连接、管理、控制计算机硬件,系统调用向上为应用程序提供相应的系统调用接口。

操作系统的功能

操作系统实现的功能主要可以理解为两类

隐藏底层硬件繁杂的调用接口,提供良好的系统级调用接口:

  通过操作系统提供的调用接口,应用开发人员无需再考虑如何调用硬件服务的细节,通过操作系统之上的应用,如UI、Shell等,平常的用户也无需考虑底层硬件是如何工作的,方便使用。

应用程序对硬件资源的调用变无序为有序:

  一般来讲,一套计算机硬件之上会运行多个应用程序,多个应用程序并没有对硬件资源使用的优先级,很容易产生资源请求冲突,而操作系统可以有效的解决这个问题,能够将不同的应用程序的资源请求序列化,防止冲突产生。

操作系统的发展

第一代计算机(1940-1955):真空管和穿孔卡片

  第一代计算机以“埃尼亚克(ENIAC)”为代表,采用真空管作为基础原件制作,当时的计算机还没有操作系统的概念,输入和输出设备主要使用穿孔卡片,系统软件非常原始,所有的程序设计都是由纯粹的机器语言编写,同一时刻只能有一个程序运行在内存中被cpu调用,当有多个程序时候,采用串行的方式,即执行完一个程序后才能执行下一个程序。

第二代计算机(1955-1965):晶体管和批处理系统

  采用半导体晶体管作为基础原件制作,这个时代被称为“大型机时代”,大型机时代有了操作系统的概念和低级的汇编编程语言,但是当时需要人力和计算机相结合。第一代计算机的人机交互是1对1的方式,即同一时刻一个人独占计算机资源,编程时候能够及时的进行程序bug的排除,而大型机时代把一堆人的程序攒到一块顺序计算,将所有输出一块输出,依旧是串行的方式,由于按批次执行,无法及时调试程序,极大影响软件开发效率。

第三代计算机(1965-1980):集成电路芯片和多道程序设计

  集成电路计算机,以IBM-360为代表,采用中小规模集成电路来构成计算机的主要功能部件,操作系统日渐完善,无需人力干涉,编程语言进入了高级语言的时代。为了解决第二代计算机串行处理的问题,第三代计算机广泛的应用了多道技术,以及后来的分时操作系统。

  多道技术:是在计算机内存中同时存放几道相互独立的程序,使它们在管理程序控制之下,相互穿插的运行,主要实现方式为时间上的复用和空间上的复用。

    时间上的复用:当一个程序等待I/O时,其他程序可以使用CPU资源

    空间上的复用:将内存分为几部分,每个部分放入一个程序,同一时间就有了多道程序

  分时操作系统:把计算机与许多终端用户连接起来,分时操作系统将系统处理时间与内存空间按一定的时间间隔,轮流地切换给各终端用户的程序使用。由于时间间隔很短,每个用户的感觉就像他独占计算机一样,有效的增加资源的使用率。

第四代计算机(1980-至今):微型机

  采用大规模和超大规模集成电路作为基本电子元件,从1983年开始为32位微型计算机的发展阶段,到1993年,Intel公司推出了64位Pentium或称P5(中文译名为“奔腾”)的微处理器,以及后来的酷睿等。

计算机基础-day2的更多相关文章

  1. 计算机基础--Java中int char byte的关系

    计算机基础--Java中int char byte的关系 重要:一个汉字占用2byte,Java中用char(0-65535 Unicode16)型字符来存字(直接打印输出的话是字而非数字),当然要用 ...

  2. Java学习之计算机基础(一)

    阅读本文大概需要 4 分钟 想要开始学习Java开发,需要掌握一些必要的计算机基础.如果你是计算机专业的人或者已经学过类似的课程,可以跳过这篇文章的阅读.计算机基础课程有很多,小编在大学里学过的课程就 ...

  3. 计算机基础-Day1

    计算机基础-Day1 一.计算机基础 首先Python是一门编程语言 语言: 那什么是语言?语言就是一种事物与另一种事物沟通的介质. 所以说编程语言是程序员跟计算机沟通的介质,那么为什么要跟计算机沟通 ...

  4. python计算机基础-Day1

    计算机基础-Day1 一.计算机基础 首先Python是一门编程语言 语言: 那什么是语言?语言就是一种事物与另一种事物沟通的介质. 所以说编程语言是程序员跟计算机沟通的介质,那么为什么要跟计算机沟通 ...

  5. Python之旅_计算机基础入门

    一.计算机基础 1.Python是编程语言 语言:一种事物与另一种事物沟通的介质. 编程语言:程序员与计算机沟通的介质. 什么是编程:程序员用编程语言把自己的逻辑思想下来,编程的结果就是一堆文件. 为 ...

  6. 计算机基础,Python基础--变量以及简单的循环

    一.计算机基础 1.CPU 相当于人体的大脑,用于计算处理数据. 2.内存  用于存储数据,CPU从内存调用数据处理计算,运算速度很快. PS:问:既然在内存里的数据CPU运算速度快,为什么计算机不全 ...

  7. day01计算机基础

    今日内容 1.计算机初步认识 1.计算机认识 1. 计算机基础 1.1硬件:cpu/内存/硬盘/主板/网卡 1.2操作系统 linux:免费开源 windows mac 1.3解释器/编译器 补充:编 ...

  8. Java面试题 Web+EJB & Spring+数据结构& 算法&计算机基础

    六.Web 部分:(共题:基础40 道,基础37 道,中等难度3 道) 122.说出Servlet 的生命周期,并说出Servlet 和CGI 的区别? [基础] 答:Web 容器加载Servlet ...

  9. python note 01 计算机基础与变量

    1.计算机基础. 2.python历史. 宏观上:python2 与 python3 区别: python2 源码不标准,混乱,重复代码太多, python3 统一 标准,去除重复代码. 3.pyth ...

随机推荐

  1. gdoi2017

    今年的gdoi第一天t1大水题一道 裸的kmp 但是 我把记录长度的int数组开成了char类型 正解变爆零 心态爆炸......... 后面的第二题两千字题目以及五千字附加故事(我是没有去看,据说全 ...

  2. CSS3 动画实现方法大全

    常用效果总结(需要引用animate.css) <!doctype html> <html lang="en"> <head> <meta ...

  3. 对象方法、类方法、原型方法 && 私有属性、公有属性、公有静态属性

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  4. Pythone3 sys模块

    1.sys.argv 可以实现从程序外部向程序传递参数2.sys.exit() 程序中间退出,exit(0)正常退出,其他为异常退出3.sys.getdefaultencoding() 获取系统编码方 ...

  5. 使用PTGui软件将全景图变成鱼眼图

    把全景图变成鱼眼图.方法一部分是自己研究的,一部分是参考学妹街景合成鱼眼照片的方法. 需要使用的软件是PTGui.是个收费软件,价格还不便宜.操作一下,安装完后就可以开始合成鱼眼图了. 加载图像 打开 ...

  6. C++之参数总结

    函数的形参为函数提供了已命名的局部存储空间,它是在函数的形参表中定义的,并由调用函数时传递给函数的实参初始化,而形参的 初始化与变量的初始化一样,如果形参具有非引用类型,则复制实参的值,如果形参为引用 ...

  7. TCP之Nagle算法&&延迟ACK

    1. Nagle算法: 是为了减少广域网的小分组数目,从而减小网络拥塞的出现: 该算法要求一个tcp连接上最多只能有一个未被确认的未完成的小分组,在该分组ack到达之前不能发送其他的小分组,tcp需要 ...

  8. [device tree] How to decompile a compiled .dtb (device tree blog) into .dts (device tree source).

    $ ./out/target/product/project_name/obj/KERNEL_OBJ/scripts/dtc/dtc -I dtb -O dts -o decompiled.dts ~ ...

  9. 1000: 恶意IP 课程作业

    1000: 恶意IP Time Limit: 1 Sec  Memory Limit: 16 MB Description Water同学最近好不容易学会了用Tornado建起一个个人的Website ...

  10. C++内存管理(转)

    C++内存管理比较好的文章,参考链接如下: C++内存管理