第一章-----操作系统导论_操作系统导论 github_飘过的小熊的博客-程序员秘密

技术标签: 操作系统  

第一章—–操作系统导论

标签(空格分隔): 操作系统之哲学原理


人造与神造

仔细观察身边的事物,发现所有的东西可以分为两类

  1. 本来就存在于自然中,人类所做的事情不过就是发现
  2. 本来并不存在,人类做的就是发明

计算机学科就是一个人造学科

人造学科的四个特点

  • 不精确,具有相对性
  • 从对人类活动的观察导出
  • 依赖于人的主观判断力
  • 通常符合人的直觉

明白了计算机是人造事物,操作系统是一个人造系统,就可以按照人造事物的特点来学习

程序是如何运行的

从程序到微指令
首先是需要用高级语言进行编程,例如Java,C++(使用的编程语言称为高级编程语言)。但是计算机并不认识高级语言编写的程序,编好的程序需要进行编译变成计算机能够识别的机器语言程序,这就需要编译器和汇编器的帮助。其次,机器语言程序还要加载到内存,形成一个运动中的程序,进程。这就需要操作系统的帮助。进程需要在计算机芯片CPU上执行才算是真正的执行,而将进程调度到CPU上运行也是由操作系统完成。最后在CPU上执行的机器语言需要变成能够在一个个时钟脉冲里进行的基本操作,这需要指令集结构和计算机硬件的支持,而整个过程还需要操作系统提供的服务和程序语言提供的执行环境。

因此程序的运行至少需要四个因素

  • 程序设计语言
  • 编译系统
  • 操作系统
  • 指令集系统(计算机硬件系统)

什么是操作系统

操作系统是介于计算机和应用软件之间的一个软件系统
操作系统定义
- 操作系统是一个软件系统
- 操作系统使计算机变得好用
- 操作系统使计算机运作变得有序

操作系统的功能
- 替用户及其应用管理计算机上的软硬件资源
- 保证计算机资源的公平竞争和使用
- 防止对计算机资源的非法侵占和使用
- 保证操作系统自身正常运转

魔术与管理

操作系统充当两个角色:管理者和魔术家

魔术家

魔术家的目的是把差的东西变好,把少的东西变多,把复杂变简单。
例如编程,因为各种数据转移均需要用户自己控制,对不同的设备要用不同的命令来驱动,而对一般人来说是很难胜任的。但是操作系统将这些工作从用户中接过来,从而让用户觉得编程是一件很容易的事情。

管理者的角色

操作系统管理计算机上的软硬件资源
根据管理的资源不同,操作系统的具体功能如下

  • CPU管理,如何分配CPU给不同应用的用户
  • 内存管理,如何分配内存给不同应用的用户
  • 外存管理,如何分配外存(磁盘)给不同的用户
  • IO管理,如何分配输入输出设备给应用和用户

作为一切软硬件资源的管理者,还要保持自身的稳定和安全,因此在设计操作系统时还有包括如下两项
- 健壮性管理:如何确保操作系统自身的稳定性
- 安全性管理:如何防止非法操作和入侵

为了完成操作系统的上述功能,设计人员构思了很多的机制,这些机制的背后隐含的是人的哲学思维,因此本书就是讲述操作系统背后的哲学原理,并依据这些原理阐述操作系统是通过何种机制,何种方式完成的上述各种管理功能

用户程序与操作系统

操作系统上下分别是虚拟机器界面和物理机器界面。物理机器下面的是硬件,硬件与操作系统的关系是本书关注的重点

操作系统与应用程序的关系
简单说:操作系统为应用程序提供了一个虚拟器界面,而应用程序运行在这个界面之上。
终极解答:操作系统通过虚拟机器界面为用户程序提供各种服务,用户程序在运行过程中不断使用操作系统提供的服务来完成自己的任务

应用程序与操作系统的之间的调用关系:

  • 用户程序在执行过程中调用操作系统的服务,操作系统为应用程序的调用返回一定的数据,这样看来应用程序是主程序,而操作系统是子程序。
  • 系统启动之后最先启动的是操作系统,之后每自动一个应用程序都相当于是操作系统将控制转移给应用程序,而应用程序执行完后又将控制返回给操作系统。因此这样看来操作系统是主程序而应用程序是子程序。
    说法不一,两种方式都是可以保留的,人造学科没有对错之分,只有好与坏。实际上,操作系统和应用程序之间是相互调用形成了一个非常复杂的动态关系,了解并阐述这种复杂的动态关系就是本书的目的

操作系统的范畴

操作系统的功能再加上一个批处理,批处理提供一种无需人机交互的程序运行模式,主要目的是达到吞吐量最大化。

为什么学习操作系统

  • 首先:操作系统的功能应用于很多的领域,开发并发程序:Web Service,分布式系统和网络
  • 其次:操作系统的技巧也应用于很多的领域,如抽象,缓存和并发

最重要的是操作系统很有趣

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yinchaoji_/article/details/52389041

智能推荐

[.NET] WPF Triggers 触发器, EventTrigger, Trigger_SlimeNull的博客-程序员秘密

触发器, 如其名, 可根据某些事件或属性值来触发某些东西, 那么我们来了解一下 xaml 中的触发器吧.样式变更:我们试试通过使用普通触发器来实现当鼠标悬停时更改控件背景颜色.然后运行一下, 效果就是这样:启动动画:然后, 试着用事件触发器(EventTrigger)与DoubleAnimation来创建一个启动动画吧(其实代码都写好了):然后运行效果如下:可以看到, 窗口是渐渐浮现的, 也就是Opacity从0到1.什么? 你问我对应的CS代码怎么写?先看看这篇文章吧, 看完它,

Java之泛型<T> T与T的用法_<t> t的实现_北漂编程小王子的博客-程序员秘密

&lt;T&gt; T表示返回值是一个泛型,传递什么类型,就返回什么类型的数据,而单独的T就是表示当前对象创建时,就限制你传递的参数类型,下面案例中,通过一个泛型的返回方式,获取每一个集合中的第一个数据, 通过返回值&lt;T&gt; T 和T的两种方法实现。1、&lt;T&gt;T 用法这个&lt;T&gt; T 表示的是返回值T是泛型,T是一个占位符,用来告诉编译器,这个东西先给我留着,等我编译的时候,告诉你。package xxxx;import java.util.ArrayList;

爬虫实战 - 如何爬取B站视频评论?_Python研究所的博客-程序员秘密

步骤(本次爬虫仅以一个视频为示例:链接)查找评论请求api解析URL 去掉第一个和最后一个参数可得评论URL,即:https://api.bilibili.com/x/v2/reply?jsonp=jsonp&amp;pn=1&amp;type=1&amp;oid=585286365&amp;sort=2 【其中pn是页码;sort控制排序顺序,1按时间排序,2按热度排序...

我用django写的网站打开为什么会有部分html无法正常显示。求解各位大神_weixin_46229698的博客-程序员秘密

#显示如下:这是new topic.html内容:{% extends “learning_logs/base.html” %}{% load bootstrap3 %}{% block header %}&lt;h2Add a new topic:/h2&gt;{% endblock header %}{% block content %} {% csrf_token...

如何成为杰出的程序员?Android最强进程保活黑科技实现原理解密及方法,全套教学资料_程序员Sunbu的博客-程序员秘密

Android全局异常处理在做android项目开发时,大家都知道如果程序出错了,会弹出来一个强制退出的弹出框,这个本身没什么问题,但是这个UI实在是太丑了,别说用户接受不了,就连我们自己本身可能都接受不了。虽然我们在发布程序时总会经过仔细的测试,但是难免会碰到预料不到的错误。今天就来自定义一个程序出错时的处理,类似iphone的闪退。(虽然闪退也是用户不愿意看到的,但是在用户体验上明显比那个原生的弹窗好多了)都说程序员是在吃青春饭,这一点的确有一点对的成分,以前我不这么认为,但随着年龄的增长,事实告

Android自定义控件入门到精通--几何图形绘制_一鱼浅游的博客-程序员秘密

文章目录几何图形绘制矩形圆角矩形椭圆圆弧几何图形绘制矩形drawRect(float left, float top, float right, float bottom, Paint paint)drawRect(Rect r, Paint paint)drawRect(RectF rect, Paint paint)矩形由左上右下四个值决定,这三个方法其实都差不多,没啥大的区别,我们就挑一个示范下 private void init() { mPaint = ne

随便推点

GetMessage()和PeekMessage()几个主要区别_einstein991225的博客-程序员秘密

GetMessage()和PeekMessage()几个主要区别: 1。GetMessage()只有在接收到消息后才将控制权转给你的程序,而PeekMessage()无论有没有消息都会将控制权转给你的程序:如果有消息,返回真,没有消息返回假。 2。GetMessage()的主要功能是从消息队列中“取出”消息,消息被取出后,消息队列中就不再由该消息了;而PeekMessage()的主要功能是

吉利博越长期使用eco模式到底会不会更容易产生积碳?_吉利博越一直开着经济好不好_pxr007的博客-程序员秘密

想要搞清楚,咱们先看看什么是ECO模式,ECO模式下,所有前进档将自动提前换高档和滞后降低档,这样可以有效降低发动机的转速,并获得更好的燃油经济性。在P/R/N/D档时,按下ECO开关,开关指示灯点亮,即进入ECO模式。温馨提示:经济模式需要变速箱油温40度以上才能开启的,如发动机处于冷机状态下,需等待发动机热机之后才能进入哦。综上,如果是以省油为目标的话,ECO适用于交通健康的路况,在交通健康的驾驶环境下可以使用燃油得到充分的燃烧,从而达到省油目的。从上面我们可以知道,ECO模式下是工况更柔和

C#中Regex.Replace 方法的使用_c# regex.replace_Shay2016的博客-程序员秘密

Regex.Replace 方法: 在指定的输入字符串内,使用指定的替换字符串替换与指定正则表达式匹配的所有字符串。Regex.Replace 语法:public static string Replace(string input,string pattern,string replacement,RegexOptions options);input

web程序员标准环境之DreamWeaver【推荐】_weixin_34088598的博客-程序员秘密

Adobe Dreamweaver,简称“DW”,中文名称"梦想编织者",是美国MACROMEDIA公司开发的集网页制作和管理网站于一身的所见即所得网页编辑器,DW是第一套针对专业网页设计师特别发展的视觉化网页开发工具,利用它可以轻而易举地制作出跨越平台限制和跨越浏览器限制的充满动感的网页。DreamWeaver的如下特性被本人纳入可推荐的理由...

008 Android activity实现多个界面的相互跳转(主要利用Intent)_weixin_30314813的博客-程序员秘密

1.activity介绍一个activity就把他理解成一个页面activity永远是全屏的。2.新建activity流程如图所示在com.lucky.test06的目录下,右击new---&gt;Activity---&gt;Empty Activity,会出现如下,点击finish即可。3.页面跳转(利用Intent实现,页面跳转传值)Intent称为意图,是A...

forEach、map、reduce比较_weixin_34000916的博客-程序员秘密

forEach、map、reduce都是Array提供的遍历数组的方法,很像,区别也很明显forEachvar arr = [2, 3, 4, 1]var res = arr.forEach(function(ele){ console.log(ele * 2)})// res为undefined复制代码forEach无返回值。按顺序跟目标做点事情,不管结果。map...

推荐文章

热门文章

相关标签