北京大学《操作系统原理》(陈向群主讲)课堂笔记(一)

news2025/1/10 16:10:07

北京大学《操作系统原理》(陈向群主讲)课堂笔记(一)

一、操作系统概述

1.1、操作系统做了什么?

以c语言helloworld为例子:

#include<stdio.h>
int main(int argc, char *argv[])
{
    puts("hello world");
    return 0;
}

用户告诉操作系统执行helloworld程序。

        如何告知?

                1、命令行输入相应的命令

                2、鼠标双击helloworld图标

操作系统:找到helloworld程序的相关信息,检查其类型是否是可执行文件;并通过程序首部信息确定代码和数据在可执行文件中的位置并计算对应的磁盘块地址。

        文件格式?

                1、Windows操作系统下可执行文件格式是.exe。

                2、Linux操作系统下可执行文件格式是.elf。

操作系统:创建一个新的进程,并将helloworld可执行文件映射到该进程结构,表示由该进程执行helloworld程序。

操作系统:为helloworld程序设置CPU上下文环境并跳到程序开始处(假设调度程序选中helloworld程序,会在下一个指令周期跳到程序开始处)。

执行helloworld程序的第一条指令,发生缺页异常

        为什么呢?

                因为程序在执行的时候会先把代码的程序和数据读入内存,CPU才能去执行。但是此时helloworld程序还没有把代码的程序和数据读入内存,所以此时硬件机制就会捕获出缺页异常,并且把控制权交给操作系统。

操作系统(页式存储方案):分配一页物理内存,并将代码从磁盘读入内存,然后继续执行helloworld程序。

        有的时候程序内存很大,一页物理内存不足以存储整个程序,因此在执行过程中会发生多次的缺页异常。然后到磁盘读入程序到内存,这个过程会执行多次。

helloworld程序执行puts函数(系统调用),在显示器上打印出字符串。

操作系统:找到要将字符串送往的显示设备,通常设备是由一个进程控制的,所以操作系统将要写的字符串发送给该进程。

操作系统:控制设备的进程告诉设备的窗口系统要显示字符串,窗口系统确定这是一个合法的操作,然后将字符串转换成像素,将像素写入设备的存储映像区。

视频硬件将像素转换成显示器可接收的一组控制/数据信号。

显示器解释信号,激发液晶屏。

用户可在屏幕上看到了“hello world”。

1.2、操作系统的定义与作用

操作系统是什么?

        操作系统是计算机系统中的一个系统软件,是一些程序模块的集合。

                1、它们能以尽量有效、合理的方式组织和管理计算机的软硬件资源。

                2、合理地组织计算机的工作流程,控制程序的执行并向用户提供各种服务功能。

                3、使得用户能够灵活、方便地使用计算机,使整个计算机系统高效率运行。

        解读几个关键词。

                有效:系统效率,资源利用率

                       CPU利用率充足与否?I/O设备是否忙碌?

                合理:各种软硬件资源的管理是否公平合理

                        如果不公平、不合理,则可能会产生什么问题?

                方便使用:用户界面或编程接口。

操作系统的三个作用

        资源的管理者                →        有效

                硬件资源:CPU,内存,设备(I/O设备、磁盘、时钟、网卡等)

                软件资源:磁盘上的文件、各类管理信息等

        向用户提供各种服务      →        方便使用

        对硬件机器的扩展          →        扩展能力

怎么管理资源?       

        跟踪记录资源的使用状况。

                如:哪些资源空闲,分配给谁使用,允许使用多长时间等。

        确定资源分配策略--算法

                静态资源策略

                动态资源策略

        实施资源的分配与回收。

        提高资源的利用率。

        保护资源的利用。

        协调多个进程对资源请求的冲突。

从资源管理的角度 - 五大基本功能

        进程/线程管理(CPU管理)

                进程线程状态、控制、同步互斥、通信、调度等。

        存储管理

                分配/回收、地址转换、存储保护、内存扩充等。

        文件管理

                文件目录、文件操作、磁盘空间、文件存取控制等。

        设备管理

                设备驱动、分配回收、缓存技术等。

        用户接口

                系统命令、编程接口。

OS是各种系统服务的提供者

        在操作系统之上,从用户角度来看:

                操作系统为用户提供了一组功能强大、方便易用的命令或系统调用。

        典型的服务:

                进程的创建、执行;文件和目录的操作;I/O设备的使用;各类统计信息等。

OS是硬件之上的第一层软件

        应用程序

        ------------虚拟机器界面

        操作系统

        -----------物理机器界面

        硬件

OS对硬件机器的扩展

        操作系统在应用程序与硬件之间建立了一个等价的扩展机器(虚拟机)。

        对硬件抽象,提高可移植性;比底层硬件更容易编程。

1.3、操作系统的主要特征

操作系统的特征:并发、共享、虚拟和随机

OS特征-并发

        并发:指处理多个同时性活动的能力。

                由于并发将会引起很多的问题:活动切换、保护、相互依赖的活动间的同步。

                在计算机系统中同时存在多个程序运行,单CPU--

                        宏观上:这些程序同时在执行。

                        微观上:任何时刻只有一个程序真正在执行,即这些程序在CPU上是轮流执行的。

        并行:与并发相似,但多指不同程序同时在多个硬件部件上执行。

OS特征-共享

        共享:操作系统与多个用户的程序共同使用计算机系统中的资源(共享有限的系统资源)

        操作系统要对系统资源进行合理分配和使用。

        资源在一个时间段内交替被多个进程所用。

  

        互斥共享(如打印机)

        同时共享(如可重入代码、磁盘文件)

OS特征-虚拟

        虚拟:一个物理实体映射为若干个对应的逻辑实体(分时或分空间)。

        虚拟是操作系统管理系统资源的重要手段,可提高资源利用率。

        如:

                CPU:每个进程的“虚处理机”。

                存储器:每个进程都有独立的虚拟地址空间(代码+数据+堆栈)。

                显示设备:多窗口或虚拟终端。

OS特征-随机

        随机:操作系统必须随时对以不可预测的次序发生的事件进行响应并处理。

        如:

                进程的运行速度不可预知:多个进程并发执行,“走走停停”,无法预知每个进程的运行推进的快慢。

                难以重现系统在某个时刻的状态(包括重现运行中的错误)。

1.4、典型操作系统的架构

Windows操作系统的体系结构

        抽象成四层:

应用程序
系统功能调用
操作系统
计算机硬件

UNIX架构

        抽象成四层:

UNIX命令和库
系统调用接口
内核
硬件

LINUX架构

ANDROID操作系统的整体架构

Android应用程序

Email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理等

应用程序框架

开发者可以完全使用核心应用程序所使用的APIs框架视图、内容提供者、资源管理器等

系统库和Android运行时

Android包含一个C/C++库的集合,供Android系统的各个组件使用。如:系统c库、3D库、SQLite、媒体库等

Linux内核

提供核心系统服务,例如:安全、内存管理、进程管理、网络协议栈、驱动模型

1.5、操作系统的分类

操作系统的发展历程

        操作系统发展是随着计算机硬件技术、应用需求的发展、软件新技术的出现而发展的。

        目标:充分利用硬件提供更好的服务

        发展历程:大型机器→个人计算机→网络→移动计算→云计算→泛在计算(物联网)→机器人。

传统操作系统的分类

        批处理操作系统

        分时操作系统

        实时操作系统

        个人计算机操作系统

        网络操作系统

        分布式操作系统

        嵌入式操作系统

批处理操作系统

        问题:慢速的输入输出处理直接由主机来完成,输入输出时,CPU处于等待状态。

        解决方案:

                卫星机:完成面向用户的输入输出(纸带或卡片),中间结果暂存在磁带或磁盘上。

        单道批处理系统:一次只处理一个作业。

        多道批处理系统:一次处理多个作业。

        SPOOLING系统(Simultaneous Peripheral Operation On-Line,同时的外围设备联机操作,又称假脱机技术)

                批处理系统的实现通常采用的技术。

                思想:利用磁盘做缓冲,将输入、计算、输出分别组织成独立的任务流,使I/O和计算真正并行。

                工作原理:

                        用户作业加载到磁盘上的输入井。

                        按某种调度策略选择几个搭配得当的作业,调入内存。

                        作业运行的结果输出到磁盘上的输出井。

                        运行结果从磁盘上的输出井送到打印机。

                现代计算机系统的打印过程通常采用的是SPOOLing技术。

分时操作系统

        时间片:操作系统将CPU的时间划分成若干个片段,称为时间片。

                操作系统以时间片为单位,轮流为每个终端用户服务,每次服务一个时间片。

                其特点是利用人的错觉,使用户感觉不到计算机在服务他人。

                追求目标:及时响应(依据是响应时间)。

                响应时间:从终端发出命令到系统给予回答所经历的时间。

通用操作系统

        分时系统与批处理系统结合。

        原则:分时优先,批处理在后。

        “前台”:需要频繁交互的作业。

        “后台”:时间性要求不强的作业。

实时操作系统

        实时操作系统:指使计算机能及时响应外部事件的请求,在规定的严格时间内完成对该事件的处理,并控制所有实时设备和实时任务协调一致地工作。

        分类:

                第一类:实时过程控制。

                        工业控制、航空、军事控制等。

                第二类:实时通信(信息)处理。

                        电讯(自动交换机)、银行、飞机订票、股市行情。

        追求目标:

                对外部请求在严格时间范围内作出响应。

                高可靠性。

        特征:

                关键参数是时间。例子:工业过程控制系统-汽车装配线。

                硬实时系统:某个动作绝对必须在规定的时刻或时间范围完成。

                软实时系统:接受偶尔违反最终时限。

个人计算机操作系统

        计算机在某一时间内为单用户服务。

        追求目标:

                界面友好,使用方便。

                丰富的应用软件。

网络操作系统

        基于计算机网络在各种计算机操作系统上按网络体系结构协议标准开发的软件

        功能:网络管理,通信,安全,资源共享和各种网络应用。

        追求目标:相互通信,资源共享。

分布式操作系统

        分布式系统:或以计算机网络为基础,或以多处理机为基础,基本特征是处理分布在不同计算机上。

        分布式操作系统:是一个统一的操作系统,允许若干个计算机可相互协作共同完成一项任务。操作系统可将各种系统任务在分布式系统中任何处理机上运行,自动实现全系统范围内的任务分配、自动调度、均衡各处理机的工作负载。

        处理能力增强、速度更快、可靠性增强、具有透明性。

嵌入式操作系统

        嵌入式系统

                在各种设备、装置或系统中,完成特定功能的软硬件系统。如汽车、手机、电视机、MP3播放器。

                它们是一个大设备、装置或系统中的一部分,这个大设备、装置或系统可以不是“计算机”。

                通过工作在反应式或对处理时间有较严格要求环境中。

        嵌入式操作系统

                运行在嵌入式系统环境中,对整个嵌入式系统以及它所操作、控制的各种部件装置等等资源进行统一协调、调度、指挥和控制的系统软件。

二、处理器概述

2.1、处理器状态(模式)

中央处理器(CPU)

        处理器由运算器、控制器、一系列的寄存器以及高速缓存构成。

        两类寄存器:

                用户可见的寄存器:高级语言编译器通过优化算法分配并使用,以减少程序访问内存次数。

                控制和状态寄存器:用于控制处理器的操作。通常由操作系统代码使用。

控制和状态寄存器

        用于控制处理器的操作。

        在某种特权级别下可以访问、修改。

        常见的控制和状态寄存器:

                程序计数器(PC),记录将要取出的指令的地址。

                指令寄存器(IR),记录最近取出的指令。

                程序状态字(PSW),记录处理器的运行状态。如条件吗、模式、控制位等信息。

操作系统的需求-保护

        从操作系统的特征考虑:并发、共享。

        提出要求:实现保护与控制。

        需要硬件提供基本运行机制:

                处理器具有特权级别,能在不同的特权级运行的不同指令集合。

                硬件机制可将OS与用户程序隔离。

处理器的状态(模式)

        现代处理器通常将CPU状态设计划分为两种、三种或四种。

        在程序状态字寄存器PSW中专门设置一位,根据运行程序对资源和指令的使用权限而设置不同的CPU状态。

特权指令和非特权指令

        操作系统需要两种CPU状态:

                内核态:运行操作系统程序。

                用户态:运行用户程序。

        特权指令:只能由操作系统使用、用户程序不能使用的指令

                例如:启动I/O、内存清零、修改程序状态字、设置时钟、允许/禁止中断、停机。

        非特权指令:用户程序可以使用的指令

                例如:控制转移、算术运算、访管指令、取数指令。

实例:x86系列处理器

        x86支持4个处理器特权级别。

                特权环:R0、R1、R2和R3。

                        从R0到R3,特权能力由高到低。

                        R0相当于内核态;R3相当于用户态;R1和R2则介于两者之间

                        不同级别能够运行的指令集合不同。

                目前大多数基于x86处理器的操作系统,只用了R0和R3两个特权级别

CPU状态之间的转换

        用户态→内核态

                唯一途径:中断/异常/陷入机制

        内核态→用户态

                设置程序状态字PSW

 

一条特殊的指令:陷入指令(又称访管指令,内核态有时又称为管理态

        提供给用户程序的接口,用于调用操作系统的功能(服务)。
例如:int,trap,syscall,sysenter/sysexit。

2.2、中断与异常机制介绍(操作系统的驱动力)

2.3、中断与异常机制工作原理

2.4、实例:x86的中断与异常机制

2.5、系统调用机制

2.6、实例:基于x86的Linux系统调用机制简介

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

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

相关文章

计算c++11 lambada表达式的大小

lambada表达式是什么? 详解&#xff1a;lambada表达式详解 我们知道lambada其实是一个匿名函数 &#xff0c; 它属于 可调用对象 类型。在 C 中&#xff0c;lambda 表达式会生成一个隐式定义的类&#xff0c;这个类重载了 operator()&#xff0c;使得该对象可以像函数一样被…

【unity小技巧】分享vscode如何进行unity开发,且如何开启unity断点调试模式,并进行unity断点调试(2024年最新的方法,实测有效)

文章目录 前言一、前置条件1、已安装Visual Studio Code&#xff0c;并且unity首选项>外部工具>外部脚本编辑器选择为Visual Studio Code [版本号]&#xff0c;2、在Visual Studio Code扩展中搜索Unity&#xff0c;并安装3、同时注意这个插件下面的描述&#xff0c;需要根…

亚马逊云科技 re:Invent 2024!Amazon Aurora DSQL 闪亮登场,跨区域提供强一致性,带来全新突破!

在 AWS re:Invent 2024 的主题演讲中&#xff0c;Amazon 正式发布了支持多区域 Active/Active 架构的关系型数据库 Aurora DSQL&#xff0c;目前已开放预览。 我正在拉斯维加斯现场观看 Keynote&#xff0c;刚刚听到这一令人振奋的消息。Aurora DSQL 的亮点在于能够跨区域写入…

计算机视觉在科学研究(数字化)中的实际应用

计算机视觉是一种利用计算机技术来解析和理解图像和视频的方法。.随着计算机技术的不断发展&#xff0c;计算机视觉被广泛应用于科学研究领域&#xff0c;为科学家提供了无限的可能。 一、生命科学领域 在生命科学领域&#xff0c;计算机视觉被广泛用于图像识别、分类和测量等…

Springboot美食分享平台

文末获取源码和万字论文&#xff0c;制作不易&#xff0c;感谢点赞支持。 Springboot美食分享平台 一、 绪论 1.1 研究意义 当今社会作为一个飞速的发展社会&#xff0c;网络已经完全渗入人们的生活&#xff0c; 网络信息已成为传播的第一大媒介&#xff0c; 可以毫不夸张说…

如何在组织中塑造和强化绩效文化?

在组织中塑造和强化绩效文化是一个系统性的工程。 一、明确绩效目标与期望 设定清晰目标 组织应根据自身战略规划&#xff0c;将长期目标分解为具体、可衡量、可实现、相关联、有时限&#xff08;SMART&#xff09;的短期和中期绩效目标。例如&#xff0c;一家连锁餐饮企业的…

WireShark 下载、安装和使用

1、下载 官网下载太慢&#xff0c;本人另外提供下载地址【下载WireShark】 2、安装 全部默认下一步即可&#xff0c;但如下图所示的这一步值得拿出来说一下。这一步是要你安装Npcap&#xff0c;但是你的电脑如果已经安装了WinPcap&#xff0c;那么可以选择不再安装Npcap。Npca…

RocketMq详解:六、RocketMq的负载均衡机制

上一章&#xff1a;《SpringBootAop实现RocketMq的幂等》 文章目录 1.背景1.1 什么是负载均衡1.2 负载均衡的意义 2.RocketMQ消息消费2.1 消息的流转过程2.2 Consumer消费消息的流程 3.RocketMq的负载均衡策略3.1 Broker负载均衡3.2 Producer发送消息负载均衡3.3 消费端的负载均…

期末复习-Hadoop综合复习

说明 以下内容仅供参考&#xff0c;提到不代表考到&#xff0c;请结合实际情况自己复习 目录 说明 一、题型及分值 二、综合案例题-部署Hadoop集群 或 部署Hadoop HA集群 案例 1&#xff1a;Hadoop 基础集群部署 案例 2&#xff1a;Hadoop HA 集群部署 案例 3&#xff…

民宿管理系统

目录 如需链接的小伙伴pc端请点击&#x1f449;&#x1f449;&#x1f449;资源 移动端请点击&#x1f449;&#x1f449;&#x1f449;请点击 1 系统简介 2 系统相关技术 2.1 Java技术 2.2 SSM框架 2.3 MySQL数据库 3 需求分析 3.1 系统介绍 3.1.1 系统概述 3.1.2 系…

Vue Web开发(二)

1. 项目搭建 1.1. 首页架子搭建 使用Element ui中的Container布局容器&#xff0c;选择倒数第二个样式&#xff0c;将代码复制到Home.vue。 1.1.1.下载less &#xff08;1&#xff09;下载less样式 npm i less   &#xff08;2&#xff09;下载less编辑解析器 npm i less…

专业135+总分400+华中科技大学824信号与系统考研经验华科电子信息与通信工程,真题,大纲,参考书。

考研成功逆袭985&#xff0c;上岸华科电子信息&#xff0c;初试专业课824信号与系统135&#xff0c;总分400&#xff0c;成绩还是很满意&#xff0c;但是也有很多遗憾&#xff0c;总结一下自己的复习&#xff0c;对于大家复习给些参考借鉴&#xff0c;对自己考研画个句号&#…

解密时序数据库的未来:TDengine Open Day技术沙龙精彩回顾

在数字化时代&#xff0c;开源已成为推动技术创新和知识共享的核心力量&#xff0c;尤其在数据领域&#xff0c;开源技术的涌现不仅促进了行业的快速发展&#xff0c;也让更多的开发者和技术爱好者得以参与其中。随着物联网、工业互联网等技术的广泛应用&#xff0c;时序数据库…

Android自定义验证码输入框

Android自定义验证码输入框 Android开发的验证码输入框&#xff0c;输入够自动触发下一步 一、思路&#xff1a; 自定义验证码控件&#xff0c;监听每一个输入框 二、效果图&#xff1a; 看视频更直观点&#xff1a; Android开发轮子-自定义验证码输入框 三、关键代码&…

软件无线电安全之GNU Radio基础(下)

往期回顾 软件无线电安全之GUN Radio基础(上) 背景 在上一小节中&#xff0c;我们简单介绍和使用了GNU Radio软件的基础功能和模块&#xff0c;同时通过GNU Radio Companion&#xff08;GRC&#xff09;创建了简单的流程图&#xff0c;展示了信号生成、处理和输出的流程。最后…

vuedraggable

官方文档&#xff1a;https://www.npmjs.com/package/vuedraggable 中文文档&#xff1a;http://www.itxst.com/vue-draggable/tutorial.html 案例下载地址&#xff1a; https://github.com/SortableJS/Vue.Draggable.git vuedraggablehttps://sortablejs.github.io/Vue.Dr…

linux基于systemd自启守护进程 systemctl自定义服务傻瓜式教程

系统服务 书接上文: linux自启任务详解 演示系统:ubuntu 20.04 开发部署项目的时候常常有这样的场景: 业务功能以后台服务的形式提供,部署完成后可以随着系统的重启而自动启动;服务异常挂掉后可以再次拉起 这个功能在ubuntu系统中通常由systemd提供 如果仅仅需要达成上述的场…

windows将文件推给Android真机/实机

记录一下 因为以前只试过从真机实机中将文件推给windows 但是从windows只简单复制粘贴的话会一直报错。 1.电脑安装adb 2.手机开启开发者模式 usb调试 3.usb连接选择文件传输 4.推送命令adb push 文件路径 /sdcard/download 步骤1和2和3不作赘述&#xff0c;可以搜相关配置教程…

区块链钱包开发:全面功能设计方案解析

区块链钱包是连接用户与区块链世界的核心工具&#xff0c;为用户提供了存储、管理和交易加密资产的便捷途径。随着区块链应用的广泛普及&#xff0c;钱包的功能需求和技术复杂度也在不断增加。如何设计和开发一款功能全面、安全可靠的区块链钱包&#xff0c;成为区块链项目成功…

超详细搭建PhpStorm+PhpStudy开发环境

刚开始接触PHP开发&#xff0c;搭建开发环境是第一步&#xff0c;网上下载PhpStorm和PhpStudy软件&#xff0c;怎样安装和激活就不详细说了&#xff0c;我们重点来看一看怎样搭配这两个开发环境。 前提&#xff1a;现在假设你已经安装完PhpStorm和PhpStudy软件。 我的PhpStor…