操作系统——概述

news2024/11/24 12:50:49

目录

1.1初识操作系统

思考题:

1.2操作系统的功能和定义

思考题:

1.3操作系统发展史

思考题:

1.4分时技术

 思考题:

1.5典型操作系统类型

1.1初识操作系统

常见桌面级别的四大操作系统:Windows、Mac OS、Linux、UNIX。

微软公司最早的操作系统是Windows1.0,首次在PC上尝试图形界面,于1985年发行。Windows1.0是基于MS-DOS的操作系统,开机时先加载MS-DOS。

再后来便是家喻户晓的Windows XP,发行于2001年8月25日,其分为家庭版(Home)和专业版(Professional)。

Mac操作系统,是苹果公司基于Unix内核的图形化操作系统,是苹果产品专属的操作系统。

Linux之RedHat,是RedHat以GNU/Linux为核心发行的操作系统。

没有安装操作系统的计算机能运行程序吗?能!能运行COMS设置程序!但是普通用户不能正常使用!

所以由此引出:计算机必须安装操作系统,才能让用户正常使用计算机

操作系统的基本功能如下:

  1.提供操作界面/可视化操作界面。

  2.控制程序运行。在Windows下可以双击快捷方式、或者可执行文件本身打开程序;在命令行模式下输入程序的名字即可打开程序...这些都是操作系统需要管理的任务。

  3.控制多个程序并发运行。一个计算机当中并不只有一个程序在运行,绝对会有多个程序在"一起"执行,通俗的讲,CPU只有一个,如何让用户感觉这些程序像是在同时一起运行是操作系统的任务。

  4.提供系统设置/配置。因为没有操作系统用户便不能正常使用计算机,但是有了操作系统之后我们想修改硬件、系统的某些功能或者配置信息,这时操作系统必须提供这样的功能。

  5.提供工具/管理软件。因为用户与计算机的交互是通过操作系统完成的,所以操作系统有必要提供一些工具或者管理软件。

  6.存取信息。我们通常把我们的资料、文档放在磁盘当中,但是用户不能直接与计算机交互,所以操作系统必须提供信息存取的手段。

  7.存取保护。现代操作系统大多都是多用户的,有时候当前用户在磁盘存放的文件并不想让其他用户修改、读取等等,操作系统必须提供存取保护、访问权限之类的功能。

总而言之,操作系统的基本功能是提供操作界面、控制程序运行、管理系统资源、配置系统参数、监控系统状态、提供工具软件集合的一款软件!是的,操作系统是一款软件

思考题:

1.我们自己编译的程序运行时需要操作系统提供哪些支持?

代码编译之后生成程序,这个程序如何存放必须由操作系统来解决,操作系统必须提供管理文件的手段。程序如何启动也必须由操作系统来支持,是通过命令行打开程序?还是通过双击鼠标呢?程序启动后,它一定会占用内存资源,那么内存资源该如何分配也是操作系统应该解决的问题。当代码中有输出语句时,操作系统必须提供一种手段与显示器交互。如果代码当中存在死循环的语句,操作系统也必须保证该程序不会独占CPU资源而让其他程序无法运行。最后便是程序退出时,操作系统必须进行"善后"工作。

2.没有安装操作系统的计算机的启动过程和结果是怎样的?

通电之后,计算机会启动自检程序,对部分硬件进行检测,如果有问题便提示用户;对外部设备进行初始化和检测;加载引导程序,引导DOS操作系统启动(如果有)。

3.常见的虚拟机软件(例如VMware)能不能理解为操作系统?

答案是不能。虚拟机软件运行在操作系统之上,即使它看起来像是一个独立的计算机能够运行其他的操作系统,但其本质还是一个用户程序。它并没有上面讲过的操作系统的基本功能。

1.2操作系统的功能和定义

操作系统功能之一:进程管理

  1.进程控制:操作系统能够控制进程的创建、暂停、唤醒、撤销等。

  2.进程调度:操作系统持有调度策略,为每个进程分配优先级。

  3.进程通信:操作系统有必要让进程之间产生联系。

操作系统功能之二:内存管理

  1.内存分配:操作系统有必要合理的为每个任务分配内存。

  2.内存共享:必要时,为了让某些任务产生通信,操作系统必须提供内存共享的机制。

  3.内存保护:有时候我们希望任务与任务之间互不干扰,操作系统就必须有对应的手段保护每个任务占有的内存。

  4.虚拟内存:这是现代操作系统通用的管理内存的手段,它能够提高各个任务的执行效率。

操作系统功能之三:设备管理

  1.设备的分配和调度:与管理内存,当用户需要使用外部设备时,操作系统必须合理的分配和调度这些设备。

  2.设备的无关性:试想一个问题,更换磁盘、硬盘、内存,似乎并不需要用户完成什么工作,因为操作系统具有为用户屏蔽底层硬件的功能。

  3.设备的传输控制:操作系统不单单只为用户服务,设备与设备之间有数据流动时,操作系统也必须提供控制、管理手段。

  4.设备驱动:通常是操作系统暴露给用户的接口,使得用户能够轻松设置设备参数。

操作系统功能之四:文件管理

  1.存储空间管理:操作系统必须知道存储空间有多少、还剩多少、某个文件能不能存储等等。

  2.文件的操作:文件通常存放在磁盘上,操作系统必须提供一些方式让用户能够轻松地操作这些文件(例如打开、删除等等)。

  3.目录的操作:在Linux中,也把目录看成文件。

  4.文件的目录的存取权限管理:上面说过,操作系统有可能是多用户的,某些用户并不想让其他用户对自己的文件进行读、写操作,所以操作系统必须提供一些权限、保护文件的机制。

由此可见,操作系统是一个大型系统程序,它为用户提供接口,方便用户控制、使用计算机;它负责为应用程序分配和调度软硬件资源,并控制与协调应用程序的并发活动,帮助用户存取和保护信息。

那么操作系统位于计算机的哪个位置?或者说,操作系统在计算机体系当中,处于什么地位?

操作系统位于用户层和硬件层之间,起到承上启下的作用。

思考题:

1.你有没有遇到过因为内存太小而导致程序运行失败的情况?

现代操作系统理论上不会发生这种情况。只可能发生因为内存过小而导致操作系统、程序运行的缓慢甚至出现死机的情况,但不会出现程序、操作系统崩溃。

1.能否用C语言写一个耗尽内存的程序来证明上面的结论?

 int main()
 {
     int cnt = 0;
     while (true)
     {
         char* p = (char*)malloc(100 * 1024 * 1024);
         if (p == NULL)
         {
            return 1;
         }
         printf("第%d次申请内存 100M 内存成功\n", ++cnt);
     }
     return 0;
}

这张图可是费了九牛二虎之力才截下来的图,很幸运,我的电脑和上面答案描述的一样,程序运行只会变慢,并不会崩溃(截图程序加载了两分钟)。

1.3操作系统发展史

用户需求的提升和硬件技术的进步是操作系统发展的两大直接动力。

计算机硬件发展的四个典型阶段:

  1.电子管时代[1946 -> 1955]

  2.晶体管时代[1955 -> 1965]

  3.集成电路时代[1965 -> 1980]

  4.大规模集成电路时代[1980 -> 至今]

根据这些时间线,硬件的速度、容量、稳定性、可靠性都得到逐步提高。

操作系统发展的四个典型阶段:

  1.手工操作(无操作系统) -> 50年代早期

  2.单道批处理系统 -> 50年代

  3.多道批处理系统 -> 60年代初

  4.分时系统 -> 60年代中

第一台数字电子计算机ENIAC就是典型的手工操作时代,由人工代替操作系统。

手工操作(没有操作系统)时代的特点:

  1.结构特点:硬件方面仅由电子管、接线面板(按钮/开关)构成;程序方面,直接暴力使用二进制编码作为程序,直接在纸带或者卡片上打孔,由人工投递给计算机。

  2.使用特点:程序的准备、启动、结束工作,全部由人工负责,繁琐且耗时。

  3.缺点:效率低下,CPU有效运行时间极低,CPU的处理速度相较于人工是相当快的,所以一个小时当中有59分中在被人工处理,只有1分钟真正占用CPU资源。用户独占,当时的计算机就类似于当今只有一台电脑的网吧,前面的用户未处理完任务,后面的用户便不能进去"上网"。缺少交互,用户交代计算机的工作人员完成某些任务,然后一直等,直到结果出来。

单道批处理系统时代的特点:

  1.工作特点:计算机管理员事先将多个作业输入到磁盘当中形成作业队列,然后由操作系统一次自动处理队列中的每个作业,操作系统负责作业队列的每个作业的装入->运行->撤出->装入...循环。程序的装入和撤出由操作系统负责完成,在一定程度上实现了自动化,效率明显提高。程序运行完毕之后,通知用户取运行结果。单道批处理系统的出现实现了自动批量化处理作业,但仍然是单道、依次、串行处理程序。

  2.实例:1955年也就是晶体管时代的开始,IBM推出第一台晶体计算机7094,由人工将程序放入读卡机,然后操作系统自动加载到主机,然后运行结果输出到外设。

   3.单道批处理系统CPU的利用情况:因为是串行处理程序,所以外设与CPU交替空闲和忙碌,不管是CPU还是外设,它们的有效利用率都很低。

多道批处理系统时代的特点:

  1.定义:在内存中存放多道程序(注意与单道批处理系统的区别,单道批处理系统的队列放在磁盘上),当某道程序因为某种原因不能继续运行而放弃CPU时,操作系统便调度零一程序投入运行,这样便尽可能地使得CPU忙碌,提高系统效率。

   2.特点:内存同时存放多道程序;宏观上并行;微观上串行。

  3.缺点:作业处理时间长,原因在于每个作业的IO完成后,可能无法及时回到CPU运行,一定程度来讲作业的处理时间确实变长了。交互能力差,在作业运行期间,用户是不能与计算机发生交互的。运行过程不确定,作业的IO完成之后能不能立即回到CPU需要看其他作业是否不再占用CPU。

思考题:

1.在多道批处理系统中尝试不断增加程序的数量,系统的效率会不会持续增加?结果如何?

首先,效率不一定会增加。当CPU处于空闲状态或者离满负荷还有一定差距时,增加程序的数量确实会增加系统的效率;但是当CPU达到满荷状态时,再尝试增加程序数量,就会降低系统的效率。造成这两种差别的原因在于:多道批处理系统在微观上还是串行的,当程序的数量合理时,能够让CPU一致处于忙碌状态,但是当程序多起来的时候,许多程序依然还是要等待CPU空闲,并且每个程序的处理周期会增加,所以效率变得更低。

1.4分时技术

60年代的硬件有两个重大进展:

  1.中断技术:CPU支持收到外部的中断信号后,停止当前工作,转去处理发送该中断信号的外部事件,处理完毕后回到原来工作的中断处,继续处理原来的工作。

  2.通道技术:实现了专门处理外设与内存之间的数据传输的处理机。也就是说,在某些场景下,某些工作不需要CPU去处理。

同时,用户需求的提高以及多终端计算机的出现也刺激了操作系统的发展:

  1.事务性任务的需求突然涌现:在此之前,多道批处理系统往往不能与用户发生交互,只能待CPU处理完成后取其结果。但是用户在这时希望能与正在运行的作业发生交互,这就要求操作系统能够支持发生交互,并且响应速度不能太慢。

  2.许多用户要求能够支持多任务、多用户的并发执行。

  3.多终端计算的出现:多终端计算机是一个高性能主机+多个终端组成的,其主机负责运算,它具有CPU和内存;而多个终端仅有输入和输出功能。主机采用分时技术轮流为每个终端服务,让每个终端都感觉到自己是"独占"主机。

 分时技术:

  1.概念:主机以很短的时间片为单位,把CPU轮流分配给每个终端使用,直到全部作业运行完毕。由于时间片很短(假设为50ms),在终端数量不多的情况下(假设为5个),每个终端都能很快重新获得CPU,它只需要等待一个周期,使得每个终端都能得到及时响应。等待周期 = 时间片 * 终端数量,也就是所,终端1运行50ms之后暂停运行,等待450ms之后又可以继续运行。

  2.特点:多路调制性:能够让多用户联机使用同一台计算机;独占性:让每个用户都感觉自己"独占"计算机;交互性:每个作业不需要等待太长的时间即可进行下一次运行,及时响应用户的请求。

正是在这样的背景下,由美国国防部组织的一个大型分时系统的实践项目Multics,1962年由MIT、BELL、和G.E参与研发的一种共用计算服务系统,在研发过程中,诞生出了世界上第一个实用化的分时操作系统、第一个真正体现操作系统领域各种先进概念和技术的操作系统——UNIX

UNIX的出现带来了革新和创造:实现了操作系统的可移植性、实现了硬件无关性、引进了"特殊文件"的概念,即把外设看作文件,实现对外设的统一管理。这些标准对后来的操作系统意义重大。

UNIX的发展历史:

 思考题:

1.分时技术的时间片设置的大小,应该根据哪些因素来考虑?是尽量大好还是尽量小好?

时间片的设置需要根据系统的总体框架来考虑,例如用户的响应时间、系统一次支持的用户数目、CPU的指令周期、中断处理时间、程序运行现场的保护和恢复时间等。所以时间片的设置应该合理,不能太大也不能太小。如果时间片太小,操作系统就要花费大量的时间去切换作业;而时间片太长,就会导致等待周期变长,影响用户的交互体验。

1.5典型操作系统类型

操作系统的进一步发展都属于分时系统的衍化:

  1.微机操作系统:随着大规模集成电路的发展,进入个人计算机(PC机)时代,1973诞生出第一个用于PC机的操作系统CP/M,它具有良好的层次结构,使用BIOS把操作系统和硬件分隔,使得操作系统有更好的可移植性,并且易学易用。典型的PC机代表便是1976年苹果的Mac OS操作系统和Macintosh系列电脑,Mac OS是首个配有图形界面和鼠标操作的操作系统。

 随后在80年代出现了微软的MS DOS操作系统,它属于磁盘操作系统,支持单用户单任务,预装在IBM的PC机上。随后在1985年11月出现了微软Windows1.0操作系统,1992年4月发表Windows3.1,1993年5月发表Windows NT,随后逐渐出现我们常用的微软操作系统Windows 95、CE、98、2K、XP、Windows 7、Windows 10......

  2.实时操作系统:在某些场景下要求操作系统能够完成事实事务,例如军事、工业控制、智能仪器等,要求操作系统能够及时完成优先、紧急任务的处理,它强调作业完成的时限。实时操作系统又分为硬实时系统,对时间要求非常严格,例如火炮控制系统、航空航天领域、制导系统、工业控制、汽车电子系统......然后便是软实时系统,对时间要求并不是太严格,而是要求尽量快,例如网络视频直播、实时互动的网游、通讯......

  3.嵌入式操作系统:它可以约等于实时操作系统,但它的范围、定义要比是实时操作系统宽泛。嵌入式系统可以搭载嵌入式操作系统,但不是必要的。例如手机是一个典型的嵌入式系统,为了能与用户互动,就必须搭载嵌入式操作系统,典型的便是Andriod和IOS。当然,Linux也可以被应用于嵌入式系统,只不过与桌面不一样的是,它可以被裁剪,也就是说用于嵌入式系统的Linux可能要比桌面的Linux少一些模块。

  4.网络操作系统:它就是在普通操作系统之上增加了网络通信和网络服务,就比如我们现在使用的UNIX、Linux、Windows等等,网络操作系统具有透明存取、存取控制的功能。

适合学习的小型开源操作系统:

  Minix OS由荷兰大Vrije大学计算机教授Andrew S.Tanenbaum编写,其名下的《现代操作系统》便是围绕Minix OS编写。Minxi OS等于Mini UNIX,它开放源代码给教学和科研人员,因为其只有12000行左右的代码,非常易于学习和掌握,其采用了先进的微内核架构,并且还是类UNIX操作系统。其官方网站为:Minix3。

推荐学习的大型开源操作系统:

  Linux由芬兰的赫尔辛基大学生Linus Torvalds编写,在1994年3月正式发布Linux 1.0。迄今为止,它的代码非常庞大,有大约1100万行。其源码下载网址为:The Linux Kernel Archives。注意,开源的代码是免费的,但是发行版不是免费的。典型的便是用于大型服务器的RedHat,以及众所周知的Ubuntu。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/472465.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

swift 技术 音频

一直觉得自己写的不是技术,而是情怀,一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的,希望我的这条路能让你们少走弯路,希望我能帮你们抹去知识的蒙尘,希望我能帮你们理清知识的脉络&#xff0…

【测试开发】单元测试、基准测试和性能分析(以 Go testing 为例)

一、为什么需要测试🤔️ 你写不出 bug-free 的代码。你认为自己写出了 bug-free 的代码,但它在你意想不到的地方出错了。你觉得自己写出了永不出错的代码,但它的性能十分糟糕。 二、在开发过程中做好测试(理想情况下)…

PLC模糊PID模糊规则矩阵(梯形图语言实现)

博途PLC的模糊PID控制详细内容请查看下面的博客文章: Matlab仿真+博途PLC模糊PID控制完整SCL源代码参考(带模糊和普通PID切换功能)_博途怎么实现模糊pid_RXXW_Dor的博客-CSDN博客模糊PID的其它相关数学基础,理论知识大家可以参看专栏的其它文章,这里不再赘述,本文就双容…

mysql实现存在则保存,不存在则更新

方式1 ON DUPLICATE KEY UPDATE 使用前提:表必须配置唯一键或者主键,且保存的字段中包含该键【重点】 原理: ON DUPLICATE KEY UPDATE如果配合主键,存在数据a,新插入b,如果主键不冲突,会保存b…

[React] useRef用法和特性

useRef 与 useState 的区别 一般在使用react-hook的时候&#xff0c;我们用到最多的就是定义变量&#xff0c;以及对应的修改变量 下面是一个最基本的 react-hook 应用程序 const Home () > {const [username, setUserName] useState();return &#xff08;<input va…

【物联网】物1— 初步认识MQTT、连接到MQTT服务端

目录 一、MQTT是什么 二、MQTT的版本 两者之间的关系&#xff1a; ​三、MQTT工作的基本原理 3.1、概念 MQTT客户端&#xff1a; MQTT服务端&#xff1a; MQTT主题&#xff1a; 3.2、MQTT订阅/发布主题的特点 相互可独立性&#xff1a; 空间可分离&#xff1a; 时间…

创建第一个DJango3的后端项目

1.安装DJango 需要事先安装python 打开控制台,使用pip命令安装django pip install django如何检验安装成功&#xff1a;在命令行中进入python的环境&#xff0c;导入并打印django的版本信息 2.使用django创建第一个项目 在命令行中进入要存放项目的位置&#xff0c;输入dj…

【mysql】日常遇到的问题解决

目录 MySQL 删除数据库报错 1010 - Error dropping database (cant rmdir) [ERR] 1452 - Cannot add or update a child row: a foreign key constraint fails MySQL 删除数据库报错 1010 - Error dropping database (cant rmdir) 场景复现&#xff1a;navicat中&#xff0c…

Java集合 —— HashMap

一、HashMap是什么 HashMap是一个存储key-value键值对的哈希表&#xff0c;表中每个元素的key都是唯一的&#xff08;通过equals方法判断&#xff09;&#xff0c;查询时通过key的hashcode值即可定位到元素的存储地址&#xff0c;因此HashMap在理想情况下查询时间复杂度为O(1)…

简单谈谈OLTP,OLAP和列存储的概念

简单谈谈OLTP,OLAP和列存储的概念 OLTP(online transaction processing)OLAP(online analytic processing)OLTP VS OLAP数据仓库OLTP数据库和数据仓库之间的差异星型和雪花分析模式列式存储列压缩列式存储和列族内存带宽与矢量化处理列式存储中的排序顺序几个不同的排序顺序 写…

换个花样玩C++(4)细聊C++的引用精妙之处

引用是C++引入的新语言特性。而且在日常工作开发过程中,经常会使用到引用,对于一些做系统架构的架构师而言,这也是不可或缺的一门基本功,我在工作中发现,很多人并没有搞清楚引用。因此我在本篇中将对引用进行详细讨论,希望对大家更好地理解和使用引用起到抛砖引玉的作用。…

你的mysql到底能存多少数据呢?

前言 参考借鉴文章 我说MySQL每张表最好不超过2000万数据&#xff0c;面试官让我回去等通知&#xff1f; 这里自己在总结一下&#xff0c;原因是相关知识欠缺&#xff0c;看别人的文章研究很久才弄明白&#xff0c;所以这里记录一些心得。 作者&#xff1a;阿杆 链接&#xff…

4月28号软件资讯更新合集.....

快速接活&#x1f496;Snowy v2.2.8 已更新 Snowy&#xff08;SnowyAdmin&#xff09;是国内首个国密前后端分离快速开发平台&#xff0c;集成国密加解密插件&#xff0c; 使用 AntdvVite3SpringBootMybatisPlusHutoolSaToken 技术栈开发&#xff0c;软件层面符合等保测评要求…

PPPwizard1.4.3软件使用说明中文翻译稿

PPP软件包使用说明(版本1.4.3) 1. 交付包 PPPWizardxy内容是按照以下模式组成&#xff1a; PPPWizardxy |-- PPPSoftwarePackage_v1.4.3.pdf |-- RTRover |-- compile.sh |-- generateLowLevel.cpp |-- getStream.cpp |-- laurichesse_ion_gnss_2015_september_bdp.pdf |-- …

JVM内存模型的演变

1&#xff0c;背景 class文件、类的加载过程。我们的class文件就要进入到JVM内存里&#xff0c;我们沿着经典的JDK1.6&#xff0c;JDK1.7&#xff0c;JDK1.8看看在其中都经历了哪些改变 概念的统一&#xff1a; 方法区&#xff1a; 方法区可以看作是JVM逻辑上管理一片区域的…

深度学习-第T5周——运动鞋品牌识别

深度学习-第T5周——运动鞋品牌识别 深度学习-第T5周——运动鞋品牌识别一、前言二、我的环境三、前期工作1、导入数据集2、查看图片数目3、查看数据 四、数据预处理1、 加载数据1、设置图片格式2、划分训练集3、划分验证集4、查看标签 2、数据可视化3、检查数据4、配置数据集 …

微短剧“小阳春”,“爱优腾芒”抢滩登陆?

降本增效一整年&#xff0c;长视频平台们似乎扭转了市场对于它们“烧钱”的印象。 爱奇艺宣布2022全年盈利&#xff0c;腾讯视频宣布从去年10月起开始盈利&#xff0c;视频平台们结束了一场“无限战争”。 与此同时&#xff0c;随着短视频平台的崛起&#xff0c;视频内容的形…

从0到1带你构建——低代码开发入门案例

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;也会涉及到服务端&#xff08;Node.js&#xff09; &#x1f4c3;个人状态&#xff1a; 在校大学生一枚&#xff0c;已拿多个前端 offer&#xff08;…

【算法】欧拉路径的DFS存储顺序

欧拉路径和欧拉回路 对于无向图&#xff0c;所有边都是连通的。 &#xff08;1&#xff09;存在欧拉路径的充分必要条件&#xff1a;度数为奇数的点只能有0个或2个。 &#xff08;2&#xff09;存在欧拉回路的充分必要条件&#xff1a;度数为奇数的点只能有0个。 对于有向图&a…

jvm之字节码

写在前面 java字节码由单字节的指令(也叫做操作码)组成&#xff0c;但一个 byte 最多能够存储 256 个指令&#xff0c;够用吗&#xff1f;截止到目前是够的&#xff0c;因为指令的个数是200多一点&#xff0c;指令分为如下四类&#xff1a; 1&#xff1a;栈操作指令&#xff…