Python第二节课(操作系统简介)

1.为何要有操作系统

先从操作系统的定义说起,操作系统是协调,管理和控制计算机硬件资源和软件资源的控制程序。也就是承接我们的软件应用和硬件调用的中间人。

操作系统位于计算机硬件和应用软件之间,本质也是一个软件,只不过可能他会有几百万行的代码,今天的我们已经不用费尽力气去研究他。准确的说,操作系统分为内核部门和系统调用两大部分,操作系统时而与软件交互,时而调用硬件进行工作,所以我们单纯的说操作系统始终处于内核态是不正确的。

那么内核态和系统调用具体为程序员们带来了什么便利呢,我们一点点的去分析一下:

1内核功能隐藏了底层电路板里各式各样的硬件调用接口,为程序员提供了更简单,清晰的系统调用接口,这时我们不再需要考虑底层的硬件接口,因为操作系统会帮我们搞定一切。

2我们安装的诸多软件会共享我们计算机的一套资源,但是当程序发生竞争的时候,我们的硬件是无法自行判断的,这是操作系统会为硬件制定一定的资源分配规则,从而让无序的竞争变得有序化。


2.操作系统的位置

操作系统是位于底层硬件与应用软件之间的一套大型系统软件,他可以把应用软件的指令通过翻译变换成硬件可以识别的机器码,从而实现软硬件的交互与通信。

 

 

3.操作系统的功能

通过内核功能屏蔽底层的电路结构与硬件接口,再通过系统调用实现软硬互通。

 

4.操作系统的发展

大体上来讲的话操作系统是经历了从无到有的过程,为什么我要这样说?因为我们的第一代计算机是没有操作系统的,只有躯壳没有灵魂,鄙人词薄,实在不会定义这样的操作系统,所以单独拎出来弄一个说法出来。

第一代操作系统其实是在第二代电脑出来以后才诞生的。

在大型机年代,FORTRAN语言或者汇编语言是通过纸带打孔进行输入进计算机进行计算的。但是这种操作方法的工作效率实在不高,当我们把若干个程序员的代码陆续录入读卡机的时候,第一个送来纸袋的程序员在干嘛呢,他在等这一批的程序员所传递来的所有纸带执行完毕,才会接收到自己的结果,在这之前,他无法进行自己的代码调试,而且在整个过程中他的时间成本是得到了过度消费的。当然,新的技术在压抑程序员的过程中让硬件得到了更大化的资源利用(这是最早的批处理系统)。

之后为了避免对时间的浪费,人们开发出了分时系统(通过多个联机终端+多道技术实现),通过利用CPU高频的特点把CPU处理多任务的时间进行分割,每一个外部用户都可以在无感知的情况下分时使用计算机资源,从而大大加快了工作的进程(此时内存隔离技术尚未成功,只能做到时间上的分离)。

在这之后,麻省理工(MIT)成功研制出了成功的内存物理隔离技术之后,结合之前的分时系统成功的在空间和时间上实现了复用,这样就有了我们今天广泛使用的系统的模型。

在这之后,基于单用户的Unix系统面世,并且基于这个版本衍生出了很多类似的版本。(Unix系统只存活于小机时代了,现在是Linux的天下)。

5.多道技术

多道技术是操作系统实现批处理的基石:他意味着处理器处理多个程序发起的多个共享资源的请求。(通过空分复用和时分复用实现)

时分复用:

由于CPU频率较高,具备快速处理事务的能力,所以我们将CPU处理事务的时间进行分段,以前1S的时间处理一件事,现在我们定义他处理N件事,N个时间分区,这可以通过时钟程序和中断程序来实现,进而实现时间上的重复利用。

空分复用:

在时分复用的基础上,我们注定会遇到诸多程序一起写进内存然后再对内存进行物理隔离的过程,当我们内存足够大的时候,我们通过对内存的分区操作,实现一个时间片段完成多个任务的执行,可以说空分复用是时分复用的关键一环。

将这两种技术结合起来,那么就是我们所提到的多道技术啦!

2017-05-19

15:54:50

时间: 2024-12-19 05:19:12

Python第二节课(操作系统简介)的相关文章

python第二节课

import turtle turtle.shape('turtle') turtle.speed(5) turtle.color('green') var=1 while var == 1: for i in range(5): turtle.forward(200) turtle.right(144) 无限循环的五角星 from turtle import* for i in range(5): up() goto(0,-20*i) down() circle(20*i) 用循环画同心圆 i

centos单用户 救援 运行级别 第二节课

centos单用户 救援 运行级别 第二节课 yum工具在minimal安装级别就已经安装 yum list:列出远程服务器端的所有的包的列表 安装桌面套件,安装图形化桌面 yum groupinstall -y "desktop"yum groupinstall -y "X window system" 临时显示英文 LANG=en

Python第二十一课(反射/元类)

Python第二十一课(反射/元类)    >>>思维导图>>>中二青年 反射reflect 什么是反射, 其实是反省,自省的意思 反射指的是一个对象应该具备,可以检测,修改,增加自身属性的能力 反射就是通过字符串操作属性 涉及的四个函数,这四个函数就是普通的内置函数 没有双下划綫,与print等等没有区别 hasattr getattr setattr delattr p = Person("jack",18,"man") #

Linux学习第二节课(2019.9.7)

昨晚课程由于加班没有参加到上课,第二天补听了课程,再来写博客.第二节课,老刘跟我们第一章讲了如何安装虚拟机,安装linux系统,RPM和YUM仓库各种关系.然后老刘给我们讲一个"灰常恐怖的gui故事"来引入第二章的内容,讲述shell的作用,最后讲述了命令的长格式和短格式以及常用命令的ehco(echo 老刘真帅).date.reboot.poweroff.wget命令.目前还是能跟得上老刘的课程,要继续努力,复习预习,争取早日考过rhce. ---------------------

Android第二节(view简介以及Android布局管理器),维维复习

布局管理器是指定View之间的排列方式的.view就是UI控件,下节课我会整理到,这里我们先讲布局,大布局在我看来就相当于一个房间,让view显示,就是说物品在房间的摆放规则. 一.View的简介 View ,一般都有TextView,EditText,Button,RadioButton,CheckBox,ImageView,ImageButton. ViewGroup,一般有LinearLayout,RelativeLayout,FrameLayout,Spinner,ListView,Gr

第二节课作业电信15-2lhz150206227

设计和编写应用系统 一文件操作 写一个字符串到一个文件中,是什么方式呢?显示到屏幕上是默认的输出文件,如果是硬盘中的一个文件,首先要打开一个文件,然后才能往里写,那么就要告诉程序这个文件在什么地方,按照什么样的方式打开(读.写.读和写.添加.覆盖等),然后打开后要给这个打开的文件一个符号(指针变量),表示后续的读和写都是针对这个文件的,而不是到屏幕的,这个指针变量以后就代表了文件自身了. 定义一个代表文件的符号(指针变量)       FILE *英文指针变量名: 打开文件的语句是      

第二节课HTML+CSS

HTML标签 1.marquee 滚动字幕 默认状态:浏览器的从右往左,滚完之后再从右往左. 属性:direction (up向上) hspace距左侧的距离 behavior(alternate来回滚动 slide不会滚动)scrollamout速度 scrolldelay停顿时间 可以放置图片滚动. 滚动一般用JS做 2.HTML表单 form 表单:注册时,把内容放在form表单里.指定的传递页面action,传值方式method get和post区别: 1.get值写在地址栏,可以看到传

Python第二节

模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都有相应的Python库支持,以后的课程中会深入讲解常用到的各种库,现在,我们先来象征性的学2个简单的. 标准库:不需要安装直接导入 第三方库:必须安装下载 标准库模块: sys模块 # Author:XP import sys print(sys.path) #打印环境变量 print(sys.argv) #打印相对路径print(sys.argv[2]) os模块 # Author:XP impo

SQL第二节课

SQL练习题 一.            设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一)~表(四)所示,数据如表1-2的表(一)~表(四)所示.用SQL语句创建四个表并完成相关题目. 表1-1数据库的表结构  表(一)Student (学生表) 属性名 数据类型 可否为空 含 义 Sno Char(3) 否 学号(主码) Sname Char(8) 否 学生姓名 Ssex Ch