NJUOS-1-操作系统概述
本文最后更新于:2 年前
Welcome to NJU’s Operation System by JYY,多学点操作系统准没错!
本期操作系统内容的回顾,我自己主要围绕三个方面展开:
- 哈工大李治军的OS
- 南大蒋炎岩的OS
- 小林Coding上操作系统的专题 + 各种面经
- CMU 15-445数据库课程
- 上面这些内容应该能把我自己对于操作系统的理解再加深一步了
操作系统概述
- Academic Integrity:
- 不上传代码到互联网
- 主动不参考别人完成的实验代码
- 不使用他人测试用例
有些行为可能会让你得到分数,但失去应有的训练 -> 良心不痛就成功了哈哈哈哈
为什么要学操作系统:
- 编程力量的觉醒,每天用的东西写不出来的…甚至原理都不了解…
- 操作系统的实现,为上层提供了什么接口。
什么是操作系统:
- A body of software, in fact, that is responsible for making it easy to run programs
- All is programs -> 举例性质,自己去悟
- 国内定义:管理软硬件资源,为程序提供服务的程序。
操作系统是如何发展的?硬件,软件,操作系统
1950s,内存很小,一次一个任务。CPU贵,但是没有办法,单批次执行任务,一个一个任务执行。(计算机很贵很贵) -> 单批次处理系统
1960s,内存大了,多个任务可以放入内存中 -> OS可以进行调度,更加充分利用CPU资源,充分榨干CPU的能力。(计算机也是很贵很贵) -> 多批次处理系统
- 同时将多个程序载入内存是一项巨大的能力:
- 有了进程(process)的概念
- 进程在执行I/O时,可以将CPU让给另一个进程:
- 在多个地址空间隔离的程序之间切换(地址空间隔离避免了程序bug导致误操作别的程序的情况)
- 虚拟存储使一个程序出现bug不会crash整个系统
- 操作系统中自然增加了进程管理的API
- 1970s+,既然能够对任务进行调度,是不是可以用时间来进行调度呢?基于中断的想法出现
- 基于中断(例如时钟中断)机制
- 时钟中断:程序在执行时,异步插入函数调用
- 由操作系统(调度策略)决定是否要切换到另一个程序执行
- Multics(MIT, 1965):现代操作系统诞生
- 到了这个阶段,从技术层面,就已经和我们现代操作系统接近了昂! -> 诞生了很多的系统
- 今天的操作系统
- 空前复杂的系统之一:
- 更复杂的处理器和内存
- 非对称多处理器
- Non-uniform Memory Access(NUMA)
- 更多硬件机制 Intel-VT
- 更多的设备和资源:
- 网卡,SSD,GPU,FPGA…
- 复杂的应用程序和应用环境:
- 服务器,电脑,手机,手表,IoT…
成为合格的操作系统用户
- 称为Power User
- 学会写代码
谢谢,Robert Morris也友情参演了MIT 6.824…,太牛了orz
命令学习
- name -a
1 |
|
man tar -> 查询某个命令的运用
tldr命令(recommandation)
tldr命令安装:https://blog.csdn.net/qq_37768971/article/details/114845695
- python查看手册
1 |
|
References
- video: https://www.bilibili.com/video/BV1Cm4y1d7Ur/?spm_id_from=333.999.0.0&vd_source=ff957cd8fbaeb55d52afc75fbcc87dfd
- Books:
- Remzi’s Operating Systems: Three Easy Pieces
- CSAPP
NJUOS-1-操作系统概述
https://alexanderliu-creator.github.io/2022/12/07/njuos-1-cao-zuo-xi-tong-gai-shu/