计算机操作系统

操作系统发展史

北城以北 提交于 2019-11-30 09:24:09
一、手工操作——穿孔卡片 1946年第一台计算机诞生--20世纪50年代中期,计算机工作还在采用手工操作方式。此时还没有操作系统的概念。 程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制台开关启动程序针对数据运行;计算完毕,打印机输出计算结果;用户取走结果并卸下纸带(或卡片)后,才让下一个用户上机。 手工操作方式两个特点: 用户独占全机。不会出现因资源已被其他用户占用而等待的现象,但资源的利用率低。 CPU 等待手工操作。CPU的利用不充分。 20世纪50年代后期,出现 人机矛盾 。:手工操作的慢速度和计算机的高速度之间形成了尖锐矛盾,手工操作方式已严重损害了系统资源的利用率(使资源利用率降为百分之几,甚至更低),不能容忍。唯一的解决办法:只有摆脱人的手工操作,实现作业的自动过渡。这样就出现了成 批处理 。 二、批处理——磁带存储 批处理系统:加载在计算机上的一个 系统软件 ,在它的控制下,计算机能够自动地、成批地处理一个或多个用户的作业(这作业包括程序、数据和命令)。 2.1 联机批处理系统 主机与输入机之间增加一个存储设备——磁带,在运行于主机上的监督程序的自动控制下,计算机可自动完成:成批地把输入机上的用户作业读入磁带,依次把磁带上的用户作业读入主机内存并执行并把计算结果向输出机输出。完成了上一批作业后

计算机操作系统

荒凉一梦 提交于 2019-11-30 06:26:13
计算机操作系统 一、操作系统引入 可能有很多同学都有碰到下面我说的这个场景,当我们花了8888大洋买了一台16G内存的专业吃鸡电脑时,打开电脑发现自己的电脑内存只有15G不到,然后就开始了吃鸡之旅。 但是如果你对你少掉的内存关心的话,你会发现并不是厂商为了节省造价成本,而这少掉的内存被某种东西给占用了,这种东西就是我们这篇文章的主角——操作系统。 二、什么是操作系统 在了解操作系统之前,我们首先回顾下编程的目的,编程的目的是奴役计算机,取代人力。 现在想象一个这样的场景,如果你是奴隶主(人),你在黑市上买了一个奴隶(计算机),你想让这个奴隶干扫地的活,但是这个奴隶可能不明白扫地是什么意思,甚至可能都不知道你全程在逼逼啥。这个时候你可能会考虑买一个管家(操作系统),这个管家既能和你交流,也能和奴隶交流,然后你有任何命令都将由这个管家传达给奴隶。 2.1什么是文件 现在让我们来想象我们在计算机上打开一个文件的流程:首先我们需要开机,其次我们需要打开一个文件。可能我们所有人都会认为这没啥,但是,这个时候你需要注意,文件它是什么呢?因为我们太习以为常了,所以我们忽略了这个问题:文件是什么呢?这个时候我不得不告诉你,你可以把文件理解成一个虚拟的单位,有了这个虚拟的单位,我们不再需要考虑机械手臂的运转,你只需要文件可以双击打开、可以写入数据、可以CTRL+S保存。

30天自制操作系统之-第一天-

℡╲_俬逩灬. 提交于 2019-11-30 05:50:49
从计算机结构到汇编程序入门 最近受知乎影响,一股脑热买了这本《30天自制操作系统》的书,该书是日本一位大牛写的。看了前20页,还是有些东西可以琢磨的,虽然接触计算机也7年了,惭愧在于大多都只停留在想法,而未动手去好好实践,大忌大忌。写这个系列章节也是希望通过这样的方式来督促自己。工作几个月的感受其实就是:凡是能够追求百分百的一定不能懈怠,不能因为你已经取得第一而放弃继续追求完美。两年前跟导师辩论过,当时我还是很不理解,“都已经达到第一了,为什么还要去花十倍的努力去做的完美”,这里再次感谢导师的教诲。一鞠躬。 废话多了,言归正传。首先根据书中第一天的任务下载个二进制编辑器, https://www.vcraft.jp/soft/bz.html , 这里直接放工具在百度云盘里。https://pan.baidu.com/s/1I1FoGeB-BRLFkbX3Pv8fnA 书中介绍该工具用于对二进制进行编辑,可以生成.img文件。之前搞KVM、OpenStack就经常跟.img文件打交道,这次终于可以试一试自己写一个.img了(nice脸)。 来源: https://www.cnblogs.com/grglym/p/11564446.html

进程的引入,计算机的发展史

眉间皱痕 提交于 2019-11-29 19:22:19
目录 并发的背景 操作系统的发展 第一代计算机(1940~1955):真空管和插件板 第二代计算机(1955~1965):晶体管和批处理系统 第三代计算机(1965~1980):集成电路芯片和多道程序设计 并发的背景 引入: 顾名思义,进程即正在执行的一个过程。进程是对正在运行程序的一个抽象。 操作系统的发展 为什么要有操作系统 现代的计算机系统主要是由一个或者多个处理器,主存,硬盘,键盘,鼠标,显示器,打印机,网络接口及其他输入输出设备组成。 一般而言,现代计算机系统是一个复杂的系统。 其一:如果每位应用程序员都必须掌握该系统所有的细节,那就不可能再编写代码了(严重影响了程序员的开发效率) 其二:并且管理这些部件并加以优化使用,是一件极富挑战性的工作,于是,计算安装了一层软件(系统软件),称为操作系统。它的任务就是为用户程序提供一个更好、更简单、更清晰的计算机模型,并管理刚才提到的所有设备。 总结: 程序员无法把所有的硬件操作细节都了解到,管理这些硬件并且加以优化使用是非常繁琐的工作,这个繁琐的工作就是操作系统来干的,有了他,程序员就从这些繁琐的工作中解脱了出来,只需要考虑自己的应用软件的编写就可以了,应用软件直接使用操作系统提供的功能来间接使用硬件。 发展史 第一代计算机(1940~1955):真空管和插件板 第一代计算机的产生背景: 第一代之前人类是想用机械取代人力

网络编程之并发编程——操作系统介绍

怎甘沉沦 提交于 2019-11-29 17:14:18
网络编程之并发编程——操作系统介绍 一、为什么要有操作系统 现代的计算机系统主要是由一个或者多个处理器,主存,硬盘,键盘,鼠标,显示器,打印机,网络接口及其他输入输出设备组成。 一般而言,现代计算机系统是一个复杂的系统。 其一:如果每位应用程序员都必须掌握该系统所有的细节,那就不可能再编写代码了(严重影响了程序员的开发效率:全部掌握这些细节可能需要一万年....)。 其二:并且管理这些部件并加以优化使用,是一件极富挑战性的工作,于是,计算安装了一层软件(系统软件),称为操作系统。它的任务就是为用户程序提供一个更好、更简单、更清晰的计算机模型,并管理刚才提到的所有设备。 总结:程序员无法把所有的硬件操作细节都了解到,管理这些硬件并且加以优化使用是非常繁琐的工作,这个繁琐的工作就是操作系统来干的,有了他,程序员就从这些繁琐的工作中解脱了出来,只需要考虑自己的应用软件的编写就可以了,应用软件直接使用操作系统提供的功能来间接使用硬件。 二、什么是操作系统 精简的说的话,操作系统就是一个协调、管理和控制计算机硬件资源和软件资源的控制程序。操作系统所处的位置如图 ps:操作系统位于计算机硬件与应用软件之间,本质也是一个软件。操作系统由操作系统的内核(运行于内核态,管理硬件资源)以及系统调用(运行于用户态,为应用程序员写的应用程序提供系统调用接口)两部分组成,所以

计算机的发展史及多道技术

非 Y 不嫁゛ 提交于 2019-11-29 15:06:44
首先先补充一下上一篇的一个小问题。   应用程序的启动流程:   前提:应用程序是运行于操作系统之上的   举例:启动暴风音影     1.双击快捷方式     2.告诉操作系统一个文件路径     3.操作系统从硬盘读取文件内容到内存中     4.cpu从内存读取数据执行 下面开始今天的课程: 一、操作系统发展史及多道技术   1.第一代计算机(1940~1955): 真空管和穿孔卡片      特点:没有操作系统的概念,所有的程序设计都是直接操控硬件。     优点:每个人独享,可以自己调试代码,找到bug。     缺点:浪费计算机资源。   2.第二代就算机(1955~1965): 晶体管和批处理系统      特点:把代码都赞到一块,让一个CPU共享,但是还是一个一个的去运行,还是顺序算法(串行)     优点:批处理,节省了机时。     缺点:有人的参与了,搬过来搬过去的麻烦,拖慢程序运行的速度   3.第三代计算机(1965~1980): 集成电路芯片和多道程序设计     第三代计算机的操作系统广泛应用了第二代计算机的操作系统没有的关键技术: 多道技术      多道技术:(指的是多道/个程序)       1.空间上的复用:内存要支持同时跑进多个程序       2.时间上的复用:多个程序要让它们能切换(什么时候要切?一个程序占用的时间过长要切

操作系统的发展史

耗尽温柔 提交于 2019-11-29 12:00:40
操作系统的发展史 一、手工操作———穿孔卡片 1946年第一台计算机诞生--20世纪50年代中期,计算机工作还在采用手工操作方式。此时还没有操作系统的概念。 程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制台开关启动程序针对数据运行;计算完毕,打印机输出计算结果;用户取走结果并卸下纸带(或卡片)后,才让下一个用户上机。 手工操作方式两个特点: 用户独占全机。不会出现因资源已被其他用户占用而等待的现象,但资源的利用率低。 CPU 等待手工操作。CPU的利用不充分。 20世纪50年代后期,出现 人机矛盾 。:手工操作的慢速度和计算机的高速度之间形成了尖锐矛盾,手工操作方式已严重损害了系统资源的利用率(使资源利用率降为百分之几,甚至更低),不能容忍。唯一的解决办法:只有摆脱人的手工操作,实现作业的自动过渡。这样就出现了成 批处理 。 二、批处理——磁带存储 2.1 联机批处理系统 [ ]( http://ww 主机与输入机之间增加一个存储设备——磁带,在运行于主机上的监督程序的自动控制下,计算机可自动完成:成批地把输入机上的用户作业读入磁带,依次把磁带上的用户作业读入主机内存并执行并把计算结果向输出机输出。完成了上一批作业后,监督程序又从输入机上输入另一批作业,保存在磁带上,并按上述步骤重复处理。

计算机操作系统第三章处理机调度与死锁习题及答案

老子叫甜甜 提交于 2019-11-29 07:28:12
进程调度的因素 引起进程调度的原因有:进程结束;时间片用完;被抢占;调用原语被阻塞;I/O请求 某进程被唤醒后立即进入运行,我们就说这个系统采用的是抢占调度方法,对吗?为什么? 不对,抢占调度方法定义:允许调度程序根据某种原则,将已分配给该进程的处理机,重新分配给另一进程,由题不能判断CPU是否处于空闲状态 高级调度和低级调度的主要任务是什么?为什么引入中级调度? (1)高级调度又称为作业调度。它是批处理系统中使用的一种调度。主要任务是按照某种算法从外存的后备队列上选择一个或多个作业调入内存,并为其创建进程、分配必要的资源,然后再将所创建的进程控制块插入就绪队列中 (2)低级调度又称进程调度。它是距离硬件最近的一级调度。其主要任务是按照某种算法从就绪队列上选择一个(或多个)进程,使其获得CPU (3)引入中级调度的目的是为了提高内存利用率和系统吞吐量。其功能是,让那些暂时不能运行的进程不再占用宝贵的内存资源,而是调其到外存上等候。此时的进程状态为挂起状态。当这些进程重新具备运行条件且内存空闲时,由中级调度选择一部分挂起状态的进程调入内存并将其状态变为就绪状态 何谓死锁?产生死锁的原因和必要条件是什么? 何谓死锁: 死锁是指多个进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,当进程处于这种状态时,若无外力作用,它们都将无法再向前推进。 产生死锁的原因: (1

并发编程:进程+线程+协程

三世轮回 提交于 2019-11-29 05:56:16
现代计算机系统是由一个或者多个处理器,主存,磁盘,打印机,键盘,鼠标显示器,网络接口以及各种其他输入 输出设备组成的复杂系统,每位程序员不可能掌握所有系统实现的细节,并且管理优化这些部件是一件挑战性极强 的工作。所以,我们需要为计算机安装一层软件,成为操作系统,任务就是用户程序提供一个简单清晰的计算机模 型,并管理以上所有设备。 定义也就有了:操作系统是一个用来协调、管理和控制计算机硬件和软件资源的系统程序,它位于硬件和应用程序之间。 (程序是运行在系统上的具有某种功能的软件,比如说浏览器,音乐播放器等。) 操作系统的内核的定义:操作系统的内核是一个管理和控制程序,负责管理计算机的所有物理资源,其中包括:文件系 统、内存管理、设备管理和进程管理。 过程: 万能程序员们将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机 内存,接着通过控制台开关启动程序针对数据运行;计算完毕,打印机输出计算结果;用户取走结果并卸下纸带(或 卡片)后,才让下一个用户上机。 注意点: 程序员需要在墙上的计时表上预约时间 同一时刻只有一个程序在内存中被CPU调用运行(串行的) 优缺点: 优点:程序员在申请的时间段内独享整个资源,即时的调试自己的程序,如果有bug可以当场处理, 缺点:这对于计算机提供商来说是一种浪费(你买一台电脑4000块,那

计算机基础知识

独自空忆成欢 提交于 2019-11-29 00:57:54
一、为何要学习计算机基础? 好多人觉得自己有点基础就都想着直接敲代码,觉得基础知识很容易,很简单,就不怎么用心去学。然而,我觉得基础知识很重要。就像盖一栋楼房一样,你先要打好地基,再去盖房。       Python是一门编程语言,即通俗一点说就是语言。    我们都知道世界上有很多种语言,比如:汉语,英语,阿拉伯语等等众多的语言。要想用这些语言去和人沟通,如果你想和英国人说话,你必须得会英语吧。而我们的计算机也有它自己的语言,你要想让计算机帮助我们做事情,你就需要和它沟通吧。那你就得懂得计算机语言吧,也就是编程。当然计算机也有很多语言,比如:C,Java,PHP,Python,C#等。所以我们就先从学习基础知识开始。也有人说学习基础理论知识很枯燥,但是,那还是得学。你要把它当成自己的兴趣,一点一点的去投入它,相信你会是很棒的。    程序用编程语言来写程序,最终开发的结果就是一个软件。就像大家都知道的QQ,腾讯视频,酷狗音乐等一系列软件。这些软件要想运行必须得有系统控制它吧。当然,有人会问:为什么要用操作系统呢?当然,很久以前的那些程序员确实是在没有操作环境下,编程语言是操作硬件来编写的。你可能觉得没问题,但是其实问题很严重。如果一直像以前那样会严重影响效率的。操作系统是出现在硬件之上的,是用来控制硬件的。所以,我们开发时只需要调用操作系统为我们提供的简单的接口就可以了。