【操作系统概念】 第2章:操作系统结构

news2024/11/19 16:42:21

文章目录

  • 0. 前言
  • 2.1 操作系统的服务
  • 2.2 操作系统的用户界面
  • 2.3 系统调用(System Call)
    • 2.3.1 系统调用的过程
  • 2.4 系统调用类型
  • 2.5 系统程序分类
  • 2.6 操作系统设计和实现
  • 2.7 操作系统结构
    • 2.7.1 简单结构
    • 2.7.2 分层方法
    • 2.7.3 微内核
    • 2.7.4 模块
  • 2.8 操作系统的调试
  • 2.9 虚拟机

0. 前言

操作系统提供环境以便执行程序。操作系统的内部结构差别很大,有许多不同的组织方式。
我们可以从多个方面来分析操作系统:
第一个方面注重系统提供的服务;第二个方面关注用户和程序员采用的接口;第三个方面是系统组件及其相互关系。

本章目标:

  1. 描述操作系统为用户、进程和其他系统提供的服务
  2. 讨论构建操作系统的各种方式
  3. 解释如何安装与定制操作系统以及如何启动操作系统

2.1 操作系统的服务

用户界面(一种是命令行界面;另一种是批界面,最为常用的是图形用户面)、程序执行、I/O操作、文件系统操作、通信、错误检测、资源分配、统计、保护和安全。
在这里插入图片描述

2.2 操作系统的用户界面

命令解释程序(CLI)被成为外壳(shell)、图形用户界面(GUI)
命令解释程序主要作用: 获取并执行用户指定的下一条指令。

2.3 系统调用(System Call)

系统调用提供操作系统服务接口。

  • 操作系统作为用户和计算机的接口,需要向上提供一些简单易用的服务,主要包括命令接口和程序接口。其中,程序接口由一组系统调用组成
  • 系统调用是操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以发出系统调用请求来获得操作系统的服务。
  • 操作系统内核提供一系列预定功能,通过一组称为系统调用的接口呈现给编程人员,系统调用把应用程序的请求传给内核,系统调用相应的内核函数完成所需的处理,将处理结果返回给应用程序。

向操作系统传递参数的三种方法:

  1. 通过寄存器来传递参数。
  2. 若参数数量比寄存器多,参数通常存在内存的块和表中,并将块的地址通过寄存器来传递。
  3. 参数也可以通过程序放在或压入堆栈中,并通过操作系统弹出。

例如:小红和小明一起去打印作业,按下打印按钮之后,打印内容并没有混淆。如果进程可以随便使用打印机,两个打印的作业就会混杂。
解决混淆的方法:操作系统提供系统调用功能,用户进程想要使用打印机这种共享资源,只能通过系统调用向操作系统发出请求,操作系统会对各个请求进行协调管理。
应用程序通过系统调用请求操作系统的服务。这样可以保证系统的稳定性和安全性,防止用户进行非法操作。

在这里插入图片描述

2.3.1 系统调用的过程

高级语言——编译——汇编语言——处理系统调用 的相关代码传递系统调用参数——执行陷入指令(用户态)——执行系统调用相应服务程序(核心态)——返回用户程序

  1. 陷入指令是在用户态执行的,执行陷入指令之后立即引发一个内中断,使CPU进入核心态
  2. 发出系统调用请求是在用户态,而对系统调用的相应处理在核心态下进行
  3. 陷入指令是唯一一个只能在用户态执行,而不可在核心态执行的指令

2.4 系统调用类型

进程控制、文件管理、设备管理、信息维护、通信、保护

  1. 进程控制: 完成进程的 创建、撤销、阻塞、唤醒等功能。这种类型的系统调用用于创建和管理进程。例如,fork()在UNIX中用于创建新的进程,exit()用于结束进程,wait()用于使父进程等待其子进程的结束,exec()用于在进程中执行新的程序。

  2. 文件管理: 完成文件的 读、写、创建、删除等功能。这类系统调用使程序可以读写文件。例如,open()、read()、write()、close()等函数使程序可以打开、读取、写入和关闭文件。此外,还有一些用于管理文件的系统调用,如delete()用于删除文件,lseek()用于改变文件的读/写位置。

  3. 设备管理: 完成设备的请求、释放、启动 等功能。这类系统调用使程序可以管理和控制设备。例如,ioctl()函数可以用于对设备进行各种控制。

  4. 信息维护:这类系统调用用于获取和设置系统数据。例如,getpid()可以获取进程的ID,time()可以获取当前的系统时间。

  5. 通信:这类系统调用用于处理进程间的通信。例如,IPC机制(如信号、管道、消息队列、共享内存、信号量等)可以使用这类系统调用,如send()、receive()等。

2.5 系统程序分类

文件管理、状态信息、文件修改、程序语言支持、程序装入和执行、通信。

2.6 操作系统设计和实现

  1. 设计目标需求:用户目标和系统目标
  2. 用户目标:更容易学习,容易使用,可靠,安全和快速
  3. 系统目标:容易设计、实现和维护。灵活、可靠、高效且没有错误。
  4. 机制和策略:机制决定如何做,策略决定做什么
  5. 实现:用高级语言的缺点仅仅在于降低了速度和增加了存储要求

2.7 操作系统结构

现代操作系统庞大而复杂,为了正常工作并易于修改,应当认真设计。常用方法是将这种系统分成子系统或模块,而不只是一个单片系统

2.7.1 简单结构

简单、小、功能有限
MS-DOS、原始的UNIX操作系统
在这里插入图片描述

2.7.2 分层方法

定义:操作系统分成若干层(级)。最底层(层0)为硬件,最高层(层N)为用户接口。每层只考虑较低层的功能和服务。
优点:每层都是利用较低层所提供的功能实现的,并为叫高层隐藏了一定的数据结构、操作和硬件的存在
缺点:分层法的主要困难涉及对层的详细定义;与其它方法相比效率较差

2.7.3 微内核

微内核方法将所有非基本部分从内核中移走,并将它们实现为系统或用户程序,这样得到了更小的内核。
微内核的主要功能是使客户程序和运行在用户空间的各种服务之间进行通信。

优点:便于扩充操作系统;很容易从一种硬件平台设计移植到另一种硬件平台设计;更安全、可靠。
缺点:由于系统功能总开销的增加而导致系统性能的下降。
在这里插入图片描述

2.7.4 模块

可加载的内核模块
大多数现代操作系统实现内核模块:采用面向对象的方法;每个核心组件是分开的;每部分与已知接口的其他部分通信;每部分根据需要加载到内核
总之,类似于层,但更灵活。

2.8 操作系统的调试

调试(debugging)是查找和更正系统(包括硬件和软件错误)。性能问题为臭虫(bug),因此调试也会包括性能优化,即通过解决处理瓶颈而改善性能。
故障分析、性能优化、DTrace

2.9 虚拟机

虚拟机(VirtualMachine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。

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

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

相关文章

IO多路复用:2024/3/5

作业1、使用poll实现tcp服务器端&#xff0c;select实现tcp客户端 服务器端&#xff1a; #include <myhead.h> #define SER_IP "192.168.199.131" //服务端IP #define SER_PORT 8888 //服务端端口号int main(int argc, const char *argv[])…

【大数据】通过 docker-compose 快速部署 MinIO 保姆级教程

文章目录 一、概述二、MinIO 与 Ceph 对比1&#xff09;架构设计对比2&#xff09;数据一致性对比3&#xff09;部署和管理对比4&#xff09;生态系统和兼容性对比 三、前期准备1&#xff09;部署 docker2&#xff09;部署 docker-compose 四、创建网络五、MinIO 编排部署1&…

第一节 JDBC是什么?

JDBC代表Java数据库连接(Java Database Connectivity)&#xff0c;它是用于Java编程语言和数据库之间的数据库无关连接的标准Java API&#xff0c;换句话说&#xff1a;JDBC是用于在Java语言编程中与数据库连接的API。 JDBC库包括通常与数据库使用相关&#xff0c;如下面提到的…

基于Vue3的在线考试系统

TDuckX 是一个功能强大的可私有化部署的在线表单考试平台&#xff0c;可以帮助您轻松创建表单和在线考试。本文档将指导您如何使用 TDuckX 创建您自己的在线考试。 步骤 1&#xff1a;登录账户 完成系统部署后&#xff0c;在浏览器中打开 TDuckX 的网站。 如果您已经拥有账户&…

docker单节点搭建在线商城

本文档使用到的软件包以上传到资源中 目录 1. 创建容器并配置基础内容 1.1 将gpmall-repo上传到容器中 1.2 添加yum源 2. 安装基础服务 2.1 安装JAVA环境 2.2 安装Redis缓存服务 2.3 安装Elasticsearch服务 2.4 安装Nginx服务 2.5 安装MariaDB数据库 2.6 安…

积分商城管理系统的设计与实现(含源文件)

项目源码&#xff1a;https://gitee.com/oklongmm/biye2 系统介绍&#xff1a; 积分商城管理系统&#xff0c;包括用户模块、商品模块、积分模块和后台管理模块。 一、用户模块&#xff1a; 用户注册与登录&#xff1a;用户可以创建账户并登录系统。 个人信息管理&#xff1…

android开发教程视频,android组件化和插件化

第一阶段&#xff1a;Android 基础知识回顾&#xff1a; 回顾Android 开发编程&#xff0c;深入理解Android系统原理和层次结构&#xff0c;深入分析Handler源码和原理&#xff1b;回顾Java&#xff0c;C/C&#xff0c;Kotlin、dart 在Android开发中必用的语言&#xff0c;熟悉…

四平方和 刷题笔记

/* 四平方和 直接暴力搜索 可能会超时 使用二分辅助搜索 先枚举出 c*cd*d并存入数组 用式子算出 a*ab*b还剩下多少查找sum数组里面是否存在符合条件的数 查找方式使用二分搜索 当逼近答案后 检查一下是否为所需的数 如果是 直接输出 */ #include <cstring> #includ…

分布式数字身份:通往Web3.0世界的个人钥匙

数字化时代&#xff0c;个人身份已不再仅仅局限于传统形式&#xff0c;分布式数字身份&#xff08;Decentralized Identity&#xff0c;简称DID&#xff09;正崭露头角&#xff0c;它允许个人通过数字签名等加密技术&#xff0c;完全掌握和控制自己的身份信息。研究报告显示&am…

展台模型设计过程中会遇到那些问题?---模大狮模型网

在展台模型设计过程中&#xff0c;可能会遇到一些常见问题&#xff0c;包括但不限于&#xff1a; 一&#xff1a;空间规划问题 设计师需要确保展台布局合理&#xff0c;能够满足参展方的需求&#xff0c;同时还要考虑观众流线和空间利用效率。解决方法包括对空间进行良好的规划…

如何选择程序员职业赛道

目录 前言1 个人技能分析1.1 技术栈评估1.2 经验积累1.3 数据科学能力 2 兴趣与价值观2.1 用户交互与界面设计2.2 复杂问题解决与系统优化 3 长期目标规划4 市场需求分析4.1 人工智能和云计算4.2 前沿技术趋势 5 就业前景5.1 前端在创意性公司中的应用5.2 后端在大型企业中的广…

pytest 教程

1. 安装pytest 目前我使用的python版本是3.10.8 pip install pytest命令会安装下面的包&#xff1a; exceptiongroup-1.2.0-py3-none-any.whl iniconfig-2.0.0-py3-none-any.whl packaging-23.2-py3-none-any.whl pluggy-1.4.0-py3-none-any.whl pytest-8.0.2-py3-none-any.…

总线要点笔记

1. AXI/AHB/APB差异 AMBA (Advanced Microcontroller Bus Architecture) 高级处理器总线架构 AHB (Advanced High-performance Bus) 高级高性能总线 ASB (Advanced System Bus) 高级系统总线 APB (Advanced Peripheral Bus) 高级外围总线 AXI (Advanced eXtensible Interface) …

无名管道数据交换

#include<stdio.h> #include <sys/types.h> #include <sys/stat.h> #include<errno.h> #include <unistd.h> #include<fcntl.h> #include<string.h>int main(int argc, const char *argv[]) {//开辟写入管道1if(mkfifo("./AAA&…

【C语言】指针超级无敌金刚霹雳进阶(但不难,还是基础)

点击这里访问我的博客主页~~ 对指针概念还不太清楚的点击这里访问上一篇指针初阶2.0 上上篇指针初阶1.0 谢谢各位大佬的支持咯 今天我们一起来学习指针进阶内容 指针进阶 一、指针变量1、字符指针变量2、数组指针变量①数组指针变量的定义②数组指针变量的初始化 3、函数指…

数字化转型导师坚鹏:成为数字化转型顾问 引领数字化美好未来

成为数字化转型顾问 引领数字化美好未来 ——数字化人才与企业的共赢之路 数字经济新时代&#xff0c;中国企业向数字化转型要效益&#xff1b; 转型顾问创未来&#xff0c;职场精英借数字化转型成良师。 我们中国政府特别重视数字经济发展及数字化人才培养。早在2020年8月2…

c++ primer学习笔记(二)

目录 第三章 一、命名空间的using声明 二、标准库的string类型 1、string对象的定义和初始化 2、string对象的读写 3、string对象的操作 4、string对象中字符的处理 三、标准库的vector类型 1、vector对象的定义和初始化 2、vector对象的操作 四、迭代器简介 1、简…

android开发框架mvp,Android面试心得必备技能储备详解

面试复习路线图 我之前复习&#xff0c;大多都在20点以后&#xff0c;因为晚上比较能集中注意力&#xff0c;制定一个学习计划&#xff0c;切勿零散的复习&#xff0c;最好是系统的复习&#xff0c;才能胜却在握 主要内容如下&#xff1a; BAT的面试题目相关性能优化相关相关…

App自动化测试笔记(一):搭建环境

一、三个环境 1、android模拟器&#xff1a;模拟安卓手机 2、androidSDK:android SDK给你提供开发测试所必须android API类库 3、java&#xff1a;android底层是c、c语言&#xff0c;应用层是java语言 二、java环境搭建 java安装 安装jdk-8u151-windows-x64.exe 配置环境变量…

小程序常用样式和组件

常用样式和组件 1. 组件和样式介绍 在开 Web 网站的时候&#xff1a; 页面的结构由 HTML 进行编写&#xff0c;例如&#xff1a;经常会用到 div、p、 span、img、a 等标签 页面的样式由 CSS 进行编写&#xff0c;例如&#xff1a;经常会采用 .class 、#id 、element 等选择器…