[伴学笔记]01-操作系统概述 [南京大学2024操作系统]


前言

督促自己,同时分享所得,阅读完本篇大约需要10分钟,希望为朋友的技术精进之路尽到绵薄之力.码字不易,望能给个点赞和收藏,以激励笔者源源不断的创作.在此以表谢意,同时因为笔者实力有限,如果发现错误,请及时指正,以免误导后人,谢谢!

jyy:01-操作系统概述 [南京大学2024操作系统]

为什么要学操作系统?

​ 因为我们要重走学科从 无 到有的这个过程,理解这个学科里面种种产生的 基本动机 基本方法 里程碑 走过的弯路。 最终的目的肯定是 想能让我们进行 应用 创新 革命

所有概念的产生 都不是凭空产生,是有所原因的,比如遇到什么什么问题 提出什么什么理论 怎么怎么样克服,把此叫做什么名字 定义下来一个概念

什么都想要一点最后注定四不像,要学会做减法,要学会专注

除了和考研相关的,其他都不去花费时间和精力

操作系统诞生的基本动机 就是更快更好的服务应用

操作系统的发展带动硬件的发展

在这里插入图片描述

学习操作系统能得到什么?

​ 可以理解更多的问题比如 为什么可以用 ctr c 结束死循环 更基础的理解什么什么东西是怎么样工作的
​ 可以手搓更多的东西,比如浏览器 病毒 编译器 杀毒软件

在这里插入图片描述

什么是操作系统?

管理软/硬件资源,并且为程序提供服务一个程序(或者换句话说就是 管理软硬件资源,并且为程序提供服务的软件 注 个人理解下 程序就是软件 软件也就是一个程序)

想要明白什么是操作系统:

​ 需要走一遍操作系统发展的历史
​ 需要理解 什么是软件 什么是硬件 什么是资源
在这里插入图片描述

| 管道符 一个东西的输出 是另一个东西的输入

夹在 software hardware中间的是操作系统

在这里插入图片描述

时间线:
1940s

1940s的时候还没有操作系统,第一台计算机1946年诞生,那时候是画流程图 打纸带,用不到操作系统,程序直接在硬件上执行,那个时候跑起来程序就很难

中断机制的出现,是因为I/O设备已经跟不上处理器的处理速度

小tip :80个字符一行代码,是从1950s沿用至今

操作系统的诞生很自然,因为那时候随着一台计算机被多人共享,就需要一个人/软件调度算力,也就自然而然的诞生了操作系统

在这里插入图片描述

1950s-1960s

计算机的硬件得到改进

此时出现了I/P设备的速度低于了处理器的速度,中断机制出现
在这里插入图片描述

1960-1970s年代.

在1960-1970s年代

操作系统很自然的出现 以API形式调度资源,一切资源调度都要经过我的允许,借助API进行调度:
由此也就延伸出
进程(progress)的概念
虚拟存储 (就是 可以防止一个程序执行异常 造成一个系统的crush 。)
程序之间的空间隔离,以及CPU进行不同空间隔离程序之间的切换。

也就是这个时间段 1965年 分时操作系统诞生了 (就如同上文所言,既然程序与程序之间可以进行切换,那为啥不能定时进行切换,所以自然而然就诞生了 分时操作系统)

1970s年代
UNIX的诞生 奠定了分时操作系统,也就是如今常用操作系统的基础

在这里插入图片描述

怎么样学操作系统? 在PPT中

Opreating systems Three Easy pieces 这本书 必读必读必读.(点点关注,后面也一定会更新本书的阅读心得和笔记.)


信息来源:

​ [01-操作系统概述 南京大学2024操作系统]_哔哩哔哩_bilibili

​ 相关学习资料: 操作系统:设计与实现 (2024 春季学期) (jyywiki.cn)

目录 I 基础知识9 1 MINIX操作系统简介11 1.1 MINIX与UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.2 探索MINIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.3 编辑器:vi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.4 编译器:CC . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.5 实习题. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2 Intel 8086体系结构19 2.1 8086 CPU结构. . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.2 运算器与指令部件. . . . . . . . . . . . . . . . . . . . . . . . 19 2.3 寄存器组. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.4 主存. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.5 堆栈. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.6 系统启动. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.7 二进制文件结构. . . . . . . . . . . . . . . . . . . . . . . . . . 25 3 ACK 8086汇编语言27 3.1 寻址. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.2 数据移动指令. . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.3 常量、标号、数据与全局变量. . . . . . . . . . . . . . . . . . 29 3.4 运算指令. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.5 标志位操纵指令. . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.6 串操作指令. . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.7 跳转、分支与循环. . . . . . . . . . . . . . . . . . . . . . . . 33 3.8 堆栈与子程序. . . . . . . . . . . . . . . . . . . . . . . . . . . 34 5 6 目录 4 实习:Hello World 37 4.1 Hello World程序. . . . . . . . . . . . . . . . . . . . . . . . . 37 4.2 实习题. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 II 汇编语言进阶41 5 C与汇编联合开发43 5.1 函数调用. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 5.2 全局与局部变量. . . . . . . . . . . . . . . . . . . . . . . . . . 45 5.3 编译与连接. . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 5.4 实习题. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 6 中断与I/O 49 6.1 中断. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 6.2 输入输出设备. . . . . . . . . . . . . . . . . . . . . . . . . . . 51 6.3 编写中断处理程序. . . . . . . . . . . . . . . . . . . . . . . . 51 6.4 实习题. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 7 实习:小游戏55 7.1 make工具. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 7.2 实习题. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 III 操作系统内核59 8 进程切换61 8.1 进程模型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 8.2 进程的实现. . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 8.3 进程切换. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 8.4 中断嵌套. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 8.5 MiniOS中的进程切换. . . . . . . . . . . . . . . . . . . . . . . 68 8.6 操作系统实现原则. . . . . . . . . . . . . . . . . . . . . . . . 69 9 进程通信71 9.1 信号量. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 9.2 消息机制. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 9.3 消息机制的实现. . . . . . . . . . . . . . . . . . . . . . . . . . 76 9.4 调试消息内核. . . . . . . . . . . . . . . . . . . . . . . . . . . 78 目录7 10 实习:操作系统内核83 10.1 引导操作系统. . . . . . . . . . . . . . . . . . . . . . . . . . . 83 10.2 微内核与层次式操作系统结构. . . . . . . . . . . . . . . . . . 83 10.3 实习题. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 IV 轻量操作系统实现87 11 设备驱动程序89 11.1 设备驱动程序原理. . . . . . . . . . . . . . . . . . . . . . . . 89 11.2 键盘设备. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 11.3 屏幕设备. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 11.4 死锁的产生与预防. . . . . . . . . . . . . . . . . . . . . . . . 93 12 存储管理95 12.1 存储管理与系统调用服务进程. . . . . . . . . . . . . . . . . . 95 12.2 进程映像的创建与终止. . . . . . . . . . . . . . . . . . . . . . 97 12.3 替换进程映像. . . . . . . . . . . . . . . . . . . . . . . . . . . 98 13 文件系统101 13.1 文件与目录. . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 13.2 文件与目录管理. . . . . . . . . . . . . . . . . . . . . . . . . . 103 13.3 文件描述符. . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 14 实习:迷你操作系统109 14.1 一个简易的Shell . . . . . . . . . . . . . . . . . . . . . . . . . . 109 14.2 实习题. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 附录111 A vi常用命令113 B 虚拟机与外部的文件交换117
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值