现代操作系统第一章学习笔记

文章介绍了操作系统的任务是管理硬件资源并为应用程序提供抽象接口,讨论了内核态和用户态的区别,提到了操作系统与图形用户界面或shell的交互。此外,文章概述了操作系统的历史,从早期的真空管到现代的移动计算。硬件部分讲解了CPU、存储器层次结构、I/O设备的工作原理,以及启动计算机的过程。最后,文章提及了操作系统的一些核心概念,如进程、地址空间和文件。
摘要由CSDN通过智能技术生成

先附上一个原版的课后习题答案的链接。
课后习题答案

1.1 什么是操作系统

操作系统:他的任务是为应用程序提供一个更好、更简单、更清晰的计算机模型,并管理贮存、磁盘等所有设备。

计算机系统总的来说分为软件和硬件,如下图所示。多数计算机有两种运行模式:内核态和用户态。软件中最基础的部分是操作系统, 它运行在内核态。操作系统具有对所有硬件的完全访问权限,可以执行机器能够运行的任何指令。 软件的其余部分运行在用户态,只能使用部分机器指令。特别指出,那些会影响机器的控制或可进行I/O操作的指令,在用户态中的程序是禁止的。 无法直接运行指令,则只能通过操作系统提供的接口来达到目的。
操作系统由硬件进行保护,防止用户试图对其进行修改。

大家都操作过Windows、Linux等操作系统,感觉这是不是就是操作系统? 这些与用户交互的程序,实际上并不是操作系统的一部分,经它们使用操作系统来完成工作,基于图标的称为图形用户界面(GUI, Graphical User Interface),我们所用的Windows就是这种,可以看到各种图标; 基于文本的则通常称为shell, 比如我们在Windows中使用cmd命令, 或者在Ubuntu中是Xshell等软件程序。
操作系统和普通软件(用户态)之间的主要区别是:如果用户不喜欢某个特定的电子邮件阅读器,他可以自由选择另一个,或者自己写一个,但是不能自行写一个属于操作系统一部分的时钟中断程序。这个程序由硬件保护,防止用户试图对其进行修改。

不过,在嵌入式系统(没有内核态)或解释系统(如基于Java的操作系统,它采用解释方式,而非硬件方式区分组件), 上述区分是比较模糊的。

在这里插入图片描述
操作系统是一种运行在内核态的软件,但这个说法并不总符合事实, 不过操作系统概括起来主要有两个作用:

  • 为应用程序提供一个资源集的清晰抽象
  • 管理硬件资源

自顶向下看:操作系统为应用程序提供基本抽象,从而使应用程序在此基础上可以组合功能。

自底向上看:操作系统用来管理复杂系统的各个部分,对资源的请求进行分配,调节不同程序见相互冲突的资源请求。其中, 资源的管理有两种不同方式实现多路复用(共享)资源:时间上复用和空间上复用:

时间上复用:当一种资源在时间上复用时,就是不同程序或者用户轮流使用它,大家排队使用。CPU就是这种操作, 一个位置,大家轮流坐
空间上复用:每个程序都得到资源的一部分,从而取代了客户排队。这就是多个位置,一人坐一个。内存就是这样分配。

1.2 操作系统的历史

第一代:真空管和穿孔卡片

第二代:晶体管和批处理系统

第三代:集成电路和多道程序设计

第四代:个人计算机(大规模集成电路)

第五代:移动计算机(手机、平板等)

1.3 计算机硬件简介

1.3.1处理器

先附图,所有设备都是通过总线连接的:
在这里插入图片描述

计算机的大脑是cpu 。 从内存中取出指令并执行。
在每个cpu基本周期中,首先从内存中取出指令,解码以确定其类型和操作数,接着执行之,然后取值、解码并执行下一条质量,按照这一方式程序被执行完成。

每个CPU都一套可执行的专门指令集。所以x86不能执行ARM程序,ARM处理器也不能执行x86程序。

CPU内部有一些用来保存关键变量和临时数据的通用寄存器、还有一些专用寄存器,如程序计数器(PC),它保存了将要取出的下一条指令的内存地址,在指令取出之后,程序技术器就被更新以便指向后继的指令。
堆栈指针(指向当前内存中栈顶位置)、程序状态字寄存器( PSW, 包含了条件码位、CPU优先级、内核态/用户态以及其它控制位)。

许多现代CPU通常可以同时取出多条指令。CPU取出指令执行的机制,是通过内部的取指单元、解码单元、执行单元三部分完成。当CPU执行指令n时,还可以对指令n+1解码,并读取指令n+2。这样,当执行完指令n后,无需等待,就可以直接执行n+1,然后n+2,这样的机制,称为流水线(pipeline)

在这里插入图片描述intel和AMD的不同CPU设计:
在这里插入图片描述

1.3.2 存储器

典型的存储层次结构及其一个大概的访问时间如下:
在这里插入图片描述
存储系统的顶层是CPU中的寄存器,它用和CPU一样的材料制成,和CPU一样快,访问没有时延。其典型的存储容量:32位CPU为32x32位,在64位CPU中为64x64位。程序必须在软件中自行管理这些寄存器。

下一层是高速缓存,他多数由硬件控制。CPU读取数据时,高速缓存硬件检查所需要的高速缓存行是否在高速缓存中,如果是,则称为高速缓存命中。提升高速缓存命中有利于提升效率。

再下一层是主存,这是存储器系统的主力,主存通常称为随机访问存储器(RAM),过去又是称之为磁芯存储器。除了主存之外,许多计算机已经在使用少量的非易失性随即访问存储器,只读存储器(ROM)在工厂中就被编程完毕,然后再也不能被修改。
EEPROM(电可擦除可编程ROM)和闪存也是非易失性的,但是和ROM相反,他们可以擦除和重写。
下一个层次是磁盘,磁盘同RAM相比,每个二进制位的成本低两个数量级以上,所以容量大且便宜,但是读取速度低。
在这里插入图片描述
在任意一个给定臂的位置,每个磁头可以读取一段环形区域,称为磁道。把一个给定
臂的位置上所有磁道合并起来,组成了一个柱面。

1.3.4 I/O设备:

I/O设备就是输入输出设备,比如键盘、鼠标、打印机、硬盘灯。I/O设备一般包含两部分:设备控制器和i/o设备本身。控制器是插在电路板上的一块或一组芯片。

每一类设备控制器都是不同的,需要不同的软件进行控制,专门与控制器对话,发出命令并接收响应的软件,叫做设备驱动程序(device driver).

实现输入输出有三种方式。
第一种,用户程序发出一个系统调用,内核将其翻译成一个对应设备驱动程序的过程调用,然后设备驱动程序启动I/O并在一个连续不断的循环中检查该设备,看该设备是否完成了工作。当I/O结束后,设备驱动程序把数据送到指定的地方,并返回,然后操作系统将控制返回给调用者。这种方式称为忙等待。缺点:占据CPU一直等待I/O的数据,直CPU一直轮询设备知道对应的IO操作完成。

第二种是通过中断机制,设备驱动程序启动设备并且让该设备在操作完成时发出一个中断。需要I/O时,先让I/O设备执行对应操作,这个时候CPU不需要等待,继续做其他事情,如果I/O执行完,拿到数据了,这个时候由中断控制器对CPU发起一个中断,处理这个I/O得到的数据。大白话就是先让CPU处理其他事情,当得到I/O数据后,告诉CPU,你先停一下现在手头上的事儿,你刚刚要的数据准备好了,现在给你,你处理下。

第三种,使用直接存储器访问芯片(DMA,Direct Memory Access),可以控制内存和某些控制器之间的的位流,DMA得到数据时,也会对CPU发起中断。

1.3.5 总线

总线就是CPU连接其他设备的线,各种设备间的数据传输通过总线完成。刚开始那张示例图已经展示了,现在再来张总线的示例图:
在这里插入图片描述

1.3.6 启动计算机(的过程)

通电后,系统首先启动BIOS里面的程序, BIOS全称基本输入输出系统(Basic Input Output System), 内部包含一些基本的参数设置,以及接下来要启动的程序,从而把系统启动起来。

1.4 操作系统大观园(各种操作系统)

操作系统有很多,主要有:大型机操作系统、服务器操作系统、多处理器操作系统、个人计算机操作系统、掌上计算机操作系统、嵌入式操作系统、传感器节点操作系统、实时操作系统、智能卡操作系统。

1.5 操作系统概念

操作系统中有很多基本概念和抽象,它们是需要理解的核心内容,主要有:进程、地址空间、文件、I/O(输入输出)、保护、shell.

1.5.1 进程

**进程:进程的本质是正在执行的一个程序。可以简单理解一个进程就是一个程序,但有时,一个程序包含多个进程。**进程是容纳运行一个程序所需要所有信息的容器。
与每一个进程相关的是地址空间,在这个地址空间中,进程可以读写,该地址空间中存放有可执行程序、程序的数据以及程序的堆栈。

与进程相关的还有资源集,通常包含:寄存器(程序计数器和堆栈指针)、打开文件的清单、突出的警报、有关进程的清单以及程序需要的其他信息。

在许多操作系统中,与一个进程有关的所有信息,除了该进程自身地址空间的内容以外,均存放在操作系统的一张表中,称为进程表,进程表是数据或链表结构,当前存在的每个进程都要占用其中一项。
一个(挂起的 )进程:进程的地址空间以及对应的进程表项。

1.5.2 地址空间

地址空间(Address Space)是指在计算机系统中,每个进程可用的内存地址的范围或集合。在操作系统中,每个进程都有其自己的地址空间,这个地址空间是分配给进程使用的内存空间。

1.5.3 文件

文件这个概念的抽象是为了描述数据的集合,这个比较好理解。

1.5.4 I/O(输入输出)

主要是指输入输出设备,通过这些设备来输入或输出数据, 比如键盘、打印机等。键盘输入字母,就可以在硬盘或者其他位置输出文字。

1.5.5 保护

计算机有大量信息,用户希望对其进行保护。对一个文件来说,通常有三种状态,可读(只能读取,不可修改),可写(只能写入,不可读出),可读可写。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值