首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >程序员养成计划-操作系统篇之初识操作系统

程序员养成计划-操作系统篇之初识操作系统

作者头像
计蒙不吃鱼
发布于 2025-06-12 11:43:15
发布于 2025-06-12 11:43:15
14800
代码可运行
举报
运行总次数:0
代码可运行

前言

在初次学习操作系统的时候是在2018年,最近有粉丝投稿问能否出几期关于408的文章,盲猜也是在准备考研。恰好今年计蒙也打算考,就当三刷复习了。可能编写的速度比较忙,还请理解。如有不懂可留言。

一、操作系统的概念

1.系统资源的管理者
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
提供的功能:处理机管理,存储器管理,文件管理,设备管理
目标:安全,高效
小提:执行一个程序前需要将程序放到内存中,才能被CPU处理
2.向上提供服务(接口等)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
封装的思想:将一些简单的硬件功能封装成简单易用的服务,方便用户使用,相对于用户而言,无需关心底层硬件的原理,只需向操作系统发出命令即可。

用户使用

  • GUI:图形化用户接口
  • 联机命令接口:(交互式命令接口)用户说一句,系统做一句。
  • 脱机命令接口:(批处理命令接口)用户说一堆,系统跟着做一堆

软件/程序员用:

  • 程序接口:可以在程序中进行系统调用来使用程序接口,普通用户不能直接使用程序接口,只能通过程序代码间接使用。
3.最接近硬件的一层软件

通常把覆盖了软件的机器称为扩展机器,又称为虚拟机。 需要实现对硬件机器的拓展(让各种硬件能够相互协调配合,实现更多更复杂的功能)

二、特征

并发,共享为两个最基本的特征,二者互为存在条件,没有并发和共享,就谈不上虚拟和异步

并发
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
两个或者多个事件在同一时间间隔内发生,宏观上同时发生,微观上交替发生。
共享
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
资源共享,是指系统中的资源可供多个并发执行的进程共同使用

两种资源共享方式

  • 互斥共享方式:一个时间段内只允许一个进程访问该资源
  • 同时共享方式:运行一个时间段内由多个进程同时(宏观上)对它们进行访问
虚拟
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性(时分复用技术)
异步
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
把一个物理上的实体变为若干个逻辑上的对应物。前者是实际存在的,后者是用户感受到的(空分复用技术)

三、发展与分类

手工操作阶段

用户独占全机,人机速度矛盾导致资源利用率极低

批处理阶段
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- 单道批处理系统
			引入脱机输入/输出技术(用外围机+磁带完成)并由监督程序负责控制作业的输入,输出
			优点:缓解了一定程度的人机速度矛盾,资源利用率有所提升
			缺点:内存中仅能有一道程序运行。CPU有大量时间是在空闲等待I/O完成
- 多道批处理系统
			每次往内存中读入多道程序(操作系统正式诞生,用于支持多道程序并发运行)
			优点:并发执行,共享计算机资源,资源利用率大幅提升,CPU保持忙碌,系统吞吐量增大。
			缺点:用户响应时间长,没有人机交互功能,无法调试程序/无法在程序运行过程中输入一些参数
分时操作系统
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
计算机以时间片为单位为各个用户/作业服务,各个用户可以通过终端与计算机进行交互
		优点:用户请求可以被即时响应,解决了人机交互问题,可以多用户同时使用一台计算机
		缺点:不能优先处理一些紧急任务
实时操作系统
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
能够优先响应一些紧急任务,某些任务不需时间片排队
		要在严格的时间限制内处理完事件。主要特点:及时性,可靠性
		细分:
			硬实时系统:必须在绝对严格的时间内完成
			软实时系统:能接受偶尔违反时间规定
网络操作系统

实现网络中各种资源的共享(如文件共享)和各台计算机之间进行通信

分布式操作系统

分布性和并行性,系统中各计算机地位相同,任何工作都可以分布在这些计算机上,由它们并行,协同完成这个任务

个人计算机操作系统

如 windows XP

四、运行机制

程序的运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CPU执行一条条的机器指令的过程,二进制的机器指令
普通程序员:应用程序
操作系统的开发:内核程序,很多内核程序合在一起称为操作系统内核,简称“内核”(内核是最接近硬件的部分---管理者)
CPU的两种状态

CPU能判断指令的类型,CPU有两种状态"内核态"和"用户态"

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
内核态(核心态,管态):此时运行的是内核程序,此时可以执行的是特权指令
用户态(目态):运行的是应用程序,只能执行非特权指令
小提:CPU中有个程序状态寄存器(PSW),其中有个二进制位,1表示”内核态“,0表示”用户态“。
内核态和用户态的切换

内–用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
执行一条特权指令
修改PSW标志位为”用户态“
操作系统主动让出CPU使用权

用–内

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
由”中断“引发
硬件自动完成变态的过程
触发中断信号意味着操作系统强夺回CPU使用权
但凡需要操作系统介入的地方都会触发

五、中断与异常

中断
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
是让操作系统内核夺回CPU使用权的唯一途径,如果没有中断,CPU就会一直执行这个程序.就不需要并发这个概念了
中断的两种类型

内中断 与执行的指令有关,中断信号来源于CPU内部 也称:异常,例外 类型:陷阱,陷入,故障,终止

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  		举例:
  			应用想请求操作系统内核的服务,会执行一条特殊的指令--陷入指令(并不是特权指令),此指令会触发一个内部中断信号

外中断 与执行的指令无关,中断信号来源于CPU外部 也称:中断

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  		举例:
  			时钟中断
  				由时钟部件发来的中断信号
  				时钟部件每隔一段时间就会给CPU发一次
  			I/O中断
  				由输入/输出设备发来的中断信号
  					当输入输出任务完成时,向CPUCPU的设定
  			每一条指令执行结束时,CPU都会例行检测是否有外中断信号
中断机制的基本原理

不同的中断信号,需要用不同的中断处理程序来处理 大概流程

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1.CPU检测到中断信号
 2. 中断信号分类
					内中断:CPU在执行指令时会检测是否有异常
					外中断:每个指令周期末尾,CPU会检查是否有中断信号需要处理

 3. 根据中断信号类型去查询“中断向量表”,	找到相应的中断处理程序

六、系统调用

操作系统作为用户和计算机硬件之间的接口,需要向上提供一些简单易用的服务。主要包括命令接口和一些程序接口。其中,程序接口是由一组系统调用组成

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
系统调用是操作系统提供给应用程序使用的接口,应用程序可以通过系统调用来请求获得操作系统内核的服务。
系统调用和库函数的区别

系统调用比库函数更加底层,且有些库函数不涉及系统调用

按照功能分类

设备管理,文件管理,进程控制,进程通信,内存管理,记忆:凡是与共享资源有关的操作,需保证系统的稳定性和安全性

系统调用的过程
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
	1.传递系统调用参数
	2.执行陷入指令(用户态),又叫:trap指令,访管指令
	3.执行相应的内请求核程序处理调用(核心态)
	4.返回
  • 注意点 陷入指令是在用户态执行的,执行后立即引发一个内中断,使CPU进入核心态 发出系统调用请求是在用户态,对系统调用的相应处理在核心态下进行

七、操作系统的体系结构

  • 内核是操作系统最根本,最核心的部分,实现操作系统的那些内核功能的那些程序就是内核程序
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- 必须放在内核中的模块
		时钟管理:实现计时功能
		中断处理:负责实现中断机制
		原语:是一种特殊的程序,处于操作系统的最底层,是最接近硬件的部分,此程序运行具有原子性,只能一气呵成,运行时间较短,调用频繁。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- 不直接涉及硬件的部分:进程,储存器,设备管理等
  所以有些操作系统不将此部分放入内核
  • 由此分为两种内核
大内核
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
大内核:以上全部包括
			优点:高性能
			缺点:内核代码庞大,结构混乱,难以维护
微内核
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
微内核:不纳入一些不涉及硬件的部分
		优点:方便维护
		缺点:性能较低
  • 关于两者的CPU改变状态 改变状态是有成本的,要消耗不少时间,频繁的变态会降低系统性能。相比较而言,微内核较为频繁。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-06-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
windows版mysql8.0安装详解
准备去下载一个本地mysql服务器时,突然发现mysql从5.7瞬间升级为8.0了,那还等什么,直接下载下来玩玩先.下载地址:
全栈程序员站长
2022/08/19
5380
windows版mysql8.0安装详解
Windows下MySQL8.0.13解压版安装教程
在下载页面的底部,有三种安装包,第一种是MySQL的安装程序,下载完点击安装即可。 第二种是普通的压缩版,体积较小。 第三种是自带debug和测试的压缩版,体积较大。这种压缩包在网上暂时没有找到对应的安装文档说明,所以建议下载第二种压缩包,也就是普通版本的MySQL压缩包。
雨临Lewis
2022/01/11
9410
MySQL8.0.26安装配置教程(windows 64位)
打开后首先输入D:(记住加冒号) 从C盘到其他盘必须先转到其他盘以后才能使用cd命令
全栈程序员站长
2022/06/27
1.2K0
MySQL8.0.26安装配置教程(windows 64位)
MariaDB安装教程(保姆级)
下载mariadb-10.6.4-winx64.zip(官网地址:Download MariaDB Server – MariaDB.org)
全栈程序员站长
2022/07/01
4.4K0
MariaDB安装教程(保姆级)
Windows64位MySQL配置式安装(绿色版)
本文主要是介绍如何在Windows64位MySQL配置式安装,一定要一步一步按步骤进行,本人也是根据个人踩过的坑总结的
小明爱吃火锅
2023/10/04
3710
Win10 系统下卸载安装 MySQL 8.0.11
https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.11-winx64.zip
SkyRiN
2018/11/20
2.4K0
Mysql 8.0.12压缩包安装教程
以前都是解压缩安装5.7版本的mysql,刚好最近换了电脑需要重装mysql,就去官网下载了新版本8.0.12,整理一下安装步骤。一来备忘,二来如果刚好也能给需要的小伙伴帮助,挺好的,Hia~。
格子Lin
2018/08/27
1.9K0
Mysql 8.0.12压缩包安装教程
windows安装MYSQL
1.确认是否已经安装过MYSQL 2.下载MYSQL安装包 3.添加配置文件并安装MYSQL 4.修改MYSQL密码 5.配置环境变量
西里国际站
2023/04/18
1.6K0
windows安装MYSQL
Mysql 8.0.18数据库安装教程
最近部署一台Server2012R2数据中心版监控服务器,数据库是mysql,准备工作如:下载数据库、配置环境变量、配置my.ini文件都正常,等到执行mysqld --initialize --console命令时就报错:“无法启动此程序,因为计算机中丢失MSVCP140.dll”、然后查询没有安装VC++程序;接着安装VC++2015的时候又提示缺少KB2999226补丁,然后安装这个补丁又要打其他补丁,都是坑……希望通过本文的介绍,让伙伴们跳过一个个坑,简单快速的安装和连接mysql。
吾爱运维
2022/09/29
1.5K0
Mysql 8.0.18数据库安装教程
MySQL8.0+ msi 版本可视化安装教程——记录
MySQL官网下载地址如下:https://dev.mysql.com/downloads/mysql/
木溪bo
2021/11/24
1.9K0
MySQL8.0+ msi 版本可视化安装教程——记录
Windows下安装MySQL详细教程
下载地址:https://dev.mysql.com/downloads/mysql/
SingYi
2022/07/14
7960
Windows下安装MySQL详细教程
mysql安装教程详细步骤[通俗易懂]
下载地址: https://dev.mysql.com/downloads/mysql/. 找到安装包后下载。(官网为英文,如果看不懂的小伙伴可以将网站复制到谷歌进行翻译)
全栈程序员站长
2022/09/05
1.6K0
mysql安装教程详细步骤[通俗易懂]
MySQL 在 Windows 下安装教程、避坑指南
MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,2008 年被 SUN 公司收购,后 SUN 公司又被 Oracle 公司收购。
丹枫无迹
2019/11/21
1K0
windows 10下载安装mysql5.7
MySQL数据库在日常使用是非常的频繁的,不管是线上还是线下。下面我就分享出我安装MySQL5.7的一步一脚印的教程,本教程只针对windows版本。
共饮一杯无
2022/11/24
6770
windows 10下载安装mysql5.7
MySQL 8.0.15安装教程
四.下载完成后解压 ,解压完是这个样子,没有的my.ini文件(这个是后一步我加的配置)
故久
2019/09/27
1.7K0
Windows中安装 MySQL8.0.30 数据库
访问MySQL官网下载安装文件https://downloads.mysql.com/archives/community/。 如下图所示,点击页面中的“DOWNLOAD”按钮。
BUG弄潮儿
2023/02/24
1.7K0
Windows中安装 MySQL8.0.30 数据库
MySQL数据库免安装版配置教程及常见问题[通俗易懂]
MySQL 是一款安全、跨平台、高效的,并与 PHP、Java 等主流编程语言紧密结合的数据库系统。
全栈程序员站长
2022/09/13
1.2K0
MySQL数据库免安装版配置教程及常见问题[通俗易懂]
MySQL数据库安装笔记教程
下载之后,我选择直接解压到D盘,文件地址是:D:\mysql-5.7.23-winx64,这里说这么清楚,是为了接下来的环境配置。你也可以根据自己个人喜好选择对应的位置。
挨踢小子部落阁
2019/10/08
1.5K0
MySQL数据库安装笔记教程
Windows下使用MySQL二进制包安装MySQL5.7
下载直链:https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.34-winx64.zip
指剑
2022/09/28
1.1K0
Windows下使用MySQL二进制包安装MySQL5.7
mysql5.7安装及配置超详细教程_mysql安装教程 linux
下载工具 官网下载下载 百度网盘提取 链接:https://pan.baidu.com/s/1BOaGKmZynM5q8WfPhqi3GA 提取码:1024 在下图中选择你自己需要的版本即可
全栈程序员站长
2022/09/23
1.2K0
mysql5.7安装及配置超详细教程_mysql安装教程 linux
相关推荐
windows版mysql8.0安装详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验