操作系统原理学习(第二周)_操作系统结构
发布日期:2022-02-10 11:37:04 浏览次数:38 分类:技术文章

本文共 3447 字,大约阅读时间需要 11 分钟。

2-1 计算机硬件

1.计算机系统体系结构

 

2.设备控制器

①I/O设备与CPU可并行执行(execute concurrently)

②每一设备控制器负责一个设备类型

③每一设备控制器有一局部缓存(CPU与I/O交互)

③CPU通过局部缓存与主缓存交换数据

④I/O从设备到设备控制器的局部缓存

⑤设备控制器通过引起中断来通知CPU的操作已经完成

 

3.中断定义:

①硬件中断(hardware interrupt)device controller informs CPU that it has finished its operation by causing an interrupt.(disk, timer)

②软件中断(software interrupt)

a trap(or an exception) 如division by zero,invalid memory access

a system call 系统调用 (also called a monitor call) 如read(),write()

 

4.中断将控制权转移到中断服务程序

①separate segments of code determine what action should be taken for each type of interrupt.

②a generic routine to examine the interrupt information, and in turn call the specific handler.

③through the interrupt vector, which contains the address of all the service routines.

 

5.I/O 结构

 

6.I/O Interrupt  

两种I/O操作:

①同步 synchronous: after I/O starts, control returns to user program only upon I/O completion.

②异步 asynchronous: after I/O starts, control returns to user program without waiting for I/O completion.

 

2-2 硬件保护

1.Dual-Mode Operation 两状态操作

①共享系统资源要求操作系统确保错误程序不会引起其他程序的运行错误。

②至少在两个运行状态之间提供硬件支持和保护

User mode 用户态--代表用户执行

Monitor mode(also supervisor mode or system mode) 管态(核心态、特权模式或系统模式)--代表操作系统执行

 

2.mode bit 模式位

①模式位添加到计算机硬件,表示当前模式。

②系统引导时,硬件处于管态;在用户模式下执行用户进程。当出现中断或陷阱时,硬件切换到管态。

 

3.特权指令(privileged instructions)

①特权指令只能在管态下运行

②在用户态下使用特权指令:使用系统调用(软件中断),切换到管态

③在管台下:直接运行。

 

4.I/O保护

①所有I/O指令都是特权指令。用户不能直接用I/O指令,必须用过系统调用,可以确保用户程序不能在管态下控制计算机。

②必须保护内存,必须保护中断向量和中断服务(在内存中)。

③保护的方法:确定进程能访问的合法空间(进程地址和空间)

base register 基址寄存器 --->指向起始地址

limit register 界限寄存器 --->指向长度

上述两者合作确定了进程的合法工作范围,实现内存保护。base register和limit register的操作都是特权指令,用户指令无法操作它们。

④用户态下生成的每个地址都要经过硬件检查。

 

5.CPU保护

问题:需防止用户程序陷入死循环或者不调用系统服务且不将控制权返回到OS

方法:timer定时器

管态转到用户态时,设定定时器。当定时器到固定时间时,定时器触发中断操作,一旦触发中断则陷入操作系统,操作系统重新获得控制权。

 

2-3 操作系统服务

1.对用户来说:

①用户接口(user interface),如 Command Line(CLI), Graphics User Interface(GUI), batch(批处理)

②程序执行(program execution)

③I/O Operation,如 system call

④File-system manipulation

⑤Communication, 进程之间交换信息,通过共享存储器或消息传递实现

⑥Error detection

⑦其他操作系统服务

 

2.总结操作系统服务:

①资源分配(Resource Allocator):把资源分配给多个用户或者多个同时运行的作业。

②账务(Accounting):跟踪和记录用户对资源的使用,用户账单和统计。

③保护(Protection):确保对资源的所有访问均在控制中。

 

2-4 系统调用 system call

1.定义

系统调用提供在运行程序和操作系统之间的接口。通常以汇编语言指令形式提供,也有C、C++形式。

 

2.现今常用API

①win32 API for windows

②POSIX API for POSIX based systems (UNIX, Linux, MacOS)

③Java API for Java virtual machine

 

3.系统调用过程

①用户使用系统调用,产生一条相应的指令。

②CPU执行到该指令是发生中断,发出有关信号给陷入处理机构。

③处理机构收到信号后,启动相关程序去完成该系统调用所要求的功能。

④在处理系统调用之前,陷入处理机构还需要保存处理现场。

 

4.入口地址表

①入口地址表,每个入口地址与相应的系统程序对接。

②陷入处理程序用系统调用功能号查找入口地址表,得到该系统程序的入口地址,并执行。

③系统调用结束后,要恢复现场,从而用户程序可以继续执行。

下图为系统调用来进行I/O任务

 

5.三种常用方式用于运行程序和操作系统之间:

①寄存器中的参数传递

②参数存于内存的一张表中,表地址作为寄存器的参数传递

③程序吧参数压入栈,由操作系统弹出

 

6.Types of System Calls 分类

①进程的控制 process control

②文件的管理 file management

③设备管理 device management

④信息维护 information maintenance

⑤通信 communications

 

2-5 操作系统结构

1.MS-DOS层次结构

①以最小空间提供最多功能,结构简单。特点是不划分模块,接口与功能层没有划分清楚。

 

2.简单结构

内核 the kernel.

包括在物理硬件之上,系统调用之下的一切,提供文件系统、CPU调度、存储管理,每一层都有大量功能。

 

3.层次化结构

①操作系统分为若干层,在低层上构建高层,底层(0层)为硬件,最高层(N层)为用户层。考虑模块层,层的选择是每层只使用其底层所提供的功能和服务。

②分层的原则:每一层都是用其底层所提供的功能和服务,以便系统调试和验证。

困难:层次划分,保证不出现双向依赖关系。

③实例:THE OS的层次化结构

优点:

  • 底层和高层可分别实现(便于扩充);
  • 高层错误不会影响低层,便于调试,利于功能的增删改;
  • 调用关系清晰(高层对低层单向依赖),避免递归调用,有利于保证设计和显示的正确性。

缺点:系统中所有进程的控制转移、通讯等全部任务交给系统核心管理,花费一定代价。

 

4.Microkernels

①通过划分系统程序,把所有不必要的部件移出内核,形成小内核。

②微内核提供最少量的进程管理、存储管理以及通信功能。

③操作系统由两大部分组成:运行在核心态的内核、运行在用户态并以C/S方式运行的进程层。

④典型系统如MACH和Windows NT

⑤微内核的特点:

  1. 内核精巧。提供任务管理、内存管理、进程通信
  2. 面向多处理机和分布式系统
  3. 基于C/S体系结构

 

本文知识以及部分图片来源:慕课_操作系统原理_田丽华

网址:

转载地址:https://blog.csdn.net/Fan_z_0802/article/details/92078562 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:操作系统原理学习(第三周_上)_进程
下一篇:操作系统原理学习_第三周(下)_进程

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月16日 07时14分08秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

python flask打造前后端分离的口罩检测 2019-04-26
【大话Mysql面试】-MySQL基础知识 2019-04-26
【大话Mysql面试】-MySQL数据类型有哪些 2019-04-26
【大话Mysql面试】-MySQL数据引擎 2019-04-26
【大话Mysql面试】-常见SQL语句书写 2019-04-26
【大话Mysql面试】-SQL语句优化 2019-04-26
【大话Mysql面试】-Mysql事务以及隔离级别 2019-04-26
【大话Mysql面试】-Mysql索引 2019-04-26
【大话Mysql面试】-Mysql锁 2019-04-26
【大话Mysql面试】-Mysql常见面试题目 2019-04-26
08 【多线程高并发】Java线程间通信的方式 2019-04-26
【数据结构与算法】什么是跳表?通俗易懂来理解跳表 2019-04-26
【数据结构与算法】什么是图?图是什么?快速带你回顾图有关的知识点 2019-04-26
【数据结构与算法】什么是串?什么是KMP算法?字符串匹配是什么? 2019-04-26
【数据结构与算法】什么是布隆过滤器?如何防止缓存穿透的问题? 2019-04-26
【Java锁体系】CopyOnWriteArrayList是什么?线程安全的arraylist是哪个? 2019-04-26
【面试题目】Java设计模式你有哪些了解?说几个常用的。 2019-04-26
【计算机操作系统】常说的死锁是什么?死锁产生的必要条件是什么?死锁的解决策略是什么? 2019-04-26
【计算机操作系统】进程管理详解?进程与线程区别是什么?进程调度的算法有哪些?进程通信有哪些? 2019-04-26
【计算机操作系统】虚拟内存是什么?分页系统地址映射?页面置换算法有哪些?分段地址映射又是什么? 2019-04-26