当前位置: 首页 > news >正文

操作系统概述

Overview


  • Q1(Why):为什么要学操作系统?
  • Q2(What):到底什么是操作系统?
  • Q3(How):怎么学操作系统?

一.为什么要学操作系统?

学习操作系统的目的

你体内的“编程力量”尚未完全觉醒

  • 每天都在用的东西,你还没搞明白
    • 窗口是怎么创建的?为什么Ctrl-C有时不能退出程序?
  • 组里的服务器有128个处理器,但你的程序却只能用一个
  • 你每天都在用的东西,你却实现不出来
    • 浏览器、编译器、IDE、游戏/外挂、任务管理器、杀毒软件、病毒…

《操作系统》给你有关“编程”的全部

  • 悟性好:学完课程就在系统方向“毕业
    • 具有编写一切“能写出来”程序的能力(具备阅读论文的能力)
  • 悟性差:内力大增
    • 可能工作中的某一天想起上课提及的内容

二.到底什么是操作系统?

Operating System: a body of software in fact, that is responsible for making it easy to run programs even allowing you to seemingly run many at the same time), allowing programs to share memory, enabling programs to interact with devices, and other fun stuff like that.(OSTEP)

  • "programs"就完了?那么多复杂的程序呢!
  • ‘’shared memory,interact with devices,…"

"管理软硬/硬件、为程序提供服务"的程序?

在这里插入图片描述

理解操作系统

“精准”的定义毫无意义

  • 问出正确的问题:操作系统如何从一开始变成现在这样的?

  • 三个重要的线索

    • 计算机(硬件)

    • 程序(软件)

    • 操作系统(管理软件的软件)

讨论狭义的操作系统

  • 对单一计算机硬件系统作出抽象、支撑程序执行的软件系统
  • 学术界谈论“操作系统”是更广义的" System"(例子:OSDI/SOSP)

1940s

1940s的计算机

跨时代、非凡的天才设计,但很简单(还不如我们数电实验课做的CPU复杂呢):

  • 计算机系统=状态机(CS课程的 takeaway message)
  • 标准的 Mealy型数字电路
    • ENIAC(1946.2.14;请在这个特殊的节日多陪陪你的电脑)

在这里插入图片描述

电子计算机的实现:

  • 逻辑门:真空电子管
  • 存储器:延迟线(delay lines)
  • 输入/输出:打孔纸带/指示灯

在这里插入图片描述

1940s的程序

ENIAC程序是用物理线路"hard-wire"的

  • 重编程需要重新接线
    • ENIAC Simulator;sieve.e

最早成功运行的一系列程序:打印平方数、素数表、计算弹道…

  • 大家还在和真正的“bugs”战斗

在这里插入图片描述

1940s的操作系统

没有操作系统

能把程序放上去就很了不起了

  • 程序直接用指令操作赢家
  • 不需要画蛇添足的程序来管理它

1950s

1950s的计算机

更快更小的逻辑门(晶体管)、更大的内存(磁芯)、丰富的I/O设备

  • I/O设备的速度已经严重低于处理器的速度,中断机制出现(1953)

在这里插入图片描述

1950s的程序

可以执行更复杂的任务,包括通用的计算任务

  • 希望使用计算机的人越来越多;希望调用API而不是直接访问设备
  • Fortran诞生(1957)

在这里插入图片描述

一行代码,一张卡片

  • 看到上面1,2…80的标号了吧
  • 7-72列才是真正的语句(这就是为什么谭浩强要教你画流程图)

在这里插入图片描述

1950s的操作系统

管理多个程序依次排队运行的库函数和调度器。

写程序、跑程序都是非常费事的(比如你写了个死循环.…)

  • 计算机非常贵( 50000-​1,000,000美元),一个学校只有一台
  • 产生了集中管理计算机的需求:多用户排队共享计算机

操作系统的概念开始形成

  • 操作( operate)任务jobs)的系统( system)
    • “批处理系统” = 程序的自动切换(换卡) + 库函数API
    • Disk Operating Systems(DOS)
      • 操作系统中开始出现“设备”、“文件、“任务等对象和API

1960s

1960s的计算机

集成电路、总线出现

  • 更快的处理器

  • 更快、更大的内存;虚拟存储出现

    • 可以同时载入多个程序而不用”换卡“了
  • 更丰富的I/O设备;完善的中断/异常机制

在这里插入图片描述

1960s的程序

更多的高级语言和编译器出现

  • COBOL(1960),APL (1962),BASIC(1965)
    • Bill Gates 和Paul Allen在1975年实现了Altair 8800上的BASIC解释器

计算机科学家们已经在今天难以想象的计算力下开发惊奇的程序

在这里插入图片描述

1960s的操作系统

能载入多个程序到内存且灵活调度它们的管理程序,包括程序可以调用的API。

同时将多个程序载入内存是一项巨大的能力

  • 有了进程 (process))的概念

  • 进程在执行VO时,可以将CPU让给另一个进程

    • 在多个地址空间隔离的程序之间切换

    • 虚拟存储使一个程序出bug不会 crash整个系统

操作系统中自然地增加进程管理API

既然操作系统已经可以在程序之间切换,为什么不让它们定时切换呢?

基于中断(例如时钟)机制

  • 时钟中断:使程序在执行时,异步地插入函数调用
  • 由操作系统(调度策略)决定是否要切换到另一个程序执行·
  • Multics(MT,1965)
    • 现代操作系统诞生

1970s+

1970s+的计算机

集成电路空前发展,个人电脑兴起,”计算机“已与今日无大异

  • CISC指令集;中断、I/O、异常、MMU、网络
  • 个人计算机(PC机)、超级计算机...

1970s+的程序

PASCAL(1970),C(1972),…

  • 今天能办到的,那个时代已经都能办到了–上天入地、图像声音视频、人工智能…
  • 个人开发者走上舞台

1970s+的操作系统

分时系统走向成熟,UNIX诞生并走向完善,奠定了现代操作系统的形态

  • 1973:信号API、管道(对象)、grep(应用程序)
  • 1983:BSD socket(对象)
  • 1984:procfs(对象)
  • UNIX衍生出的大家族
    • 1BSD(1977)GUN(1983)MacOS(1984)Windows(1985)Ubuntu(2004)IOS(2007)Android(2008)…

今天的操作系统

通过"虚拟化”硬件资源为程序运行提供服务的软件。

空前复杂的系统之一

  • 更复杂的处理器和内存

    • 非对称多处理器( ARM big LITTLE; Intel P/ E-cores)

    • Non-uniform Memory Access(NUMA)

    • 更多的硬件机制 Intel-VT/AMD-V, TrustZone/SGX,TSX,

  • 更多的设备和资源

    • 网卡、SSD、GPU、FPGA
  • 复杂的应用需求和应用环境

    • 服务器、个人电脑、智能手机、手表、手环、loT/微控制器∴

理解操作系统:三个根本问题

  • 操作系统服务谁

    • 程序 = 状态机

    • 涉及: 多线程 Linux应用程序

  • (设计/应用视角)操作系统为程序提供什么服务?

    • 操作系统 = 对象+API
    • 涉及:POSIX+部分 Linux特性
  • (实现/硬件视角)如何实现操作系统提供的服务?

    • 操作系统 = C程序
      • 完成初始化后就成为 interrupt/trap/ fault handler
    • 涉及:xv6,自制迷你操作系统

三.怎么学操作系统?

计算机专业学生必须具备的核心素质

1.是一个合格的操作系统用户

  • 会STFW/RTFM自己动手解决问题
  • 不怕使用任何命令行工具
    • vim tmux grep gcc binutils

2.不惧怕写代码

  • 能管理一定规模(数千行)的代码
  • 能在出bug时默念”机器永远是对的、我肯定能调出来“
    • 然后开始用正确的工具/方法调试

感到Linux/ Power Shell很难用?

1.没有建立信心、没有理解基本逻辑

2.没有找对材料( Baidu v.s. Google/Bing/ Github/ Stackoverflow)

3.没有用对工具(man v.s. tldr;该用IDE就别vim)

在这里插入图片描述

学会写代码

写代码 = 创造有趣的东西

  • 命令行 + 浏览器就是世界
    • 我们还有sympy sage z3 rich
  • 不需要讲语言特性、设计模式…
    • 编就对了;你自然而然会需要他们的

Talk is Cheap. Show Me the Code

应用视角/操作系统设计:操作系统 = 对象 + API

  • demo小程序(X86-64为主)
  • 各类系统工具的实现( strace,gdb,)

硬件视角/操作系统实现:操作系统 = C程序

  • xv6
    • 2006年 Russ cox, Frans Kaashoek, Robert Morris在MT重写的UNIX系统
    • 大家熟悉的RISC-V版本

最重要的:Get Your Hands Dirty

参考视频

相关文章:

操作系统概述

Overview Q1(Why):为什么要学操作系统?Q2(What):到底什么是操作系统?Q3(How):怎么学操作系统? 一.为什么要学操作系统? 学习操作系统…...

记录重启csdn

有太多收藏的链接落灰了,在此重启~ 1、社会 https://mp.weixin.qq.com/s/Uq0koAbMUk8OFZg2nCg_fg https://mp.weixin.qq.com/s/yCtLdEWSKVVAKhvLHxjeig https://zhuanlan.zhihu.com/p/569162335?utm_mediumsocial&utm_oi938179755602853888&ut…...

蓝牙耳机哪个品牌质量最好最耐用?蓝牙耳机排行榜10强推荐

现今,外出佩戴蓝牙耳机的人越来越多,各大品牌厂商对于蓝牙耳机各种性能的设计也愈发用心。那么,无线耳机哪个品牌音质好?下面,我来给大家推荐几款质量好的无线蓝牙耳机,可以当个参考。 一.南卡…...

mysql 双主架构详解

文章目录 一、背景二、MySQL双主(主主)架构方案三、MySQL双主架构图四、MySQL双主架构的优缺点五、MySQL双主架构,会存在什么问题?总结一、背景 MySQL 主从模式优缺点 容灾:主数据库宕机后,启动从数据库,用于故障切换 备份:防止数据丢失 读写分离:主数据库可以只负责…...

计算机指令系统基础 - 寻址方式详解

文章目录1 概述2 常见寻址方式2.1 立即寻址2.2 直接寻址2.3 间接寻址2.4 寄存器寻址2.5 寄存器间接寻址2.6 相对寻址2.7 变址寻址3 扩展3.1 操作码3.2 常见寄存器1 概述 计算机指令:指挥计算机工作的 指示 和 命令内容:通常一条 指令 包括两方面的内容 …...

React Three Fiber动画入门

使用静态对象和形状构建 3D 场景非常酷,但是当你可以使用动画使场景栩栩如生时,它会更酷。 在 3D 世界中,有一个称为角色装配的过程,它允许你创建称为骨架的特殊对象,其作用类似于骨骼和关节系统。 这些骨架连接到一块…...

为什么我推荐你使用 systemd timer 替代 cronjob?

概述 前几天在使用 Terraform cloud-init 批量初始化我的实验室 Linux 机器。正好发现有一些定时场景需要使用到 cronjob, 进一步了解到 systemd timer 完全可以替换 cronjob, 并且 systemd timer 有一些非常有趣的功能。 回归话题:为什么我推荐你使用 systemd t…...

elasticsearch基础6——head插件安装和web页面查询操作使用、ik分词器

文章目录一、基本了解1.1 插件分类1.2 插件管理命令二、分析插件2.1 es中的分析插件2.1.1 官方核心分析插件2.1.2 社区提供分析插件2.2 API扩展插件三、Head 插件3.1 安装3.2 web页面使用3.2.1 概览页3.2.1.1 unassigned问题解决3.2.2 索引页3.2.3 数据浏览页3.2.4 基本查询页3…...

【Linux】七、进程间通信(二)

目录 三、system V(IPC) 3.1 system V共享内存 3.1.1 共享内存的概念 3.1.2 共享内存的原理 3.1.3 创建共享内存(shmget ) 3.1.4 ftok函数 3.1.5 查看共享内存资源 3.1.6 创建共享内存测试代码 3.1.7 再次理解共享内存 3.1.8 释放共享内存(shm…...

Synchronized学习大总结

目录 1.synchronized特性 2.synchronized如何使用 3.synchronized的锁机制 1.synchronized特性 synchronized 是乐观锁,也是悲观锁,是轻量级锁(j基于自旋锁实现),也是重量级锁(基于挂起等待锁实现),它不是读写锁,是互斥锁,当一个线程抢到锁之后,其它线程阻塞等待,进入synchr…...

VN5620以太网测试——环境搭建篇

文章目录 前言一、新建以太网工程二、Port Configuration三、Link up四 Trace界面五、添加Ethernet Packet Builder六、添加ARP Packet七、添加Ethernet IG总结前言 CANoe(CAN open environment)VN5620 :是一个紧凑而强大的接口,用于以太网网络的分析、仿真、测试和验证。 …...

redis哨兵和集群部署手册

一、哨兵模式原理及作用 1.原理 哨兵(sentinel): 是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现 故障时,通过投票机制选择新的master并将所有slave连接到新的master。所以整个运行哨兵的集…...

ctfshow web入门 java 295 298-300

其他没啥好讲的,都是工具就通杀了 web295 漏洞地址 http://ip/S2-048/integration/saveGangster.action 这里我们可以看到他是解析了 尝试使用网上的payload %{(#dmognl.OgnlContextDEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess#dm):((#container#cont…...

SWIG包装器使用指南——(四)C#使用SWIG简介与实践

SWIG系列:http://t.csdn.cn/cIAcr 文章目录一、简介二、全局函数、变量、常量三、继承四、传递指针、引用、数组与值五、基本类型的指针与引用六、基本类型的数组七、基本类型的默认map规则八、常用的typemap方法九、代码插入十、实践10.1 如何映射Foo*&到ref F…...

HashTable, HashMap 和 ConcurrentHashMap

HashTable, HashMap 和 ConcurrentHashMap 都是 Java 集合框架中的类,用于存储和操作键值对。它们之间存在一些关键区别,如下所示: 1.同步性: HashTable:线程安全,所有的方法都是同步的(synchr…...

ToBeWritten之IoT 技战法

也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 转移发布平台通知:将不再在CSDN博客发布新文章,敬…...

基于ASP.NET开发的医院手术麻醉信息管理系统源码 项目源码

系统主要功能介绍: 门诊科室管理系统:手术快速申请、手术申请、手术审核 麻醉科管理系统:手术安排、术后处方、术后小结、PCS实施及管理记录、手术流程 手术护理系统:手术安排、安排临时手术、添加急诊手术、局麻手术护理、整体护…...

伪加密超具体破解办法,直击原理底层,细致演示!!!

前言: 由于我自己目前在misc和取证工作中,也遇到很多压缩包的问题,我个人非常喜欢做压缩包的题目,但也会遇到伪加密问题难以破解,全网ctf教程我都看完了,但是都觉得不够具体,所以我写一篇博客&…...

ChatGPT大规模封锁亚洲地区账号

我是卢松松,点点上面的头像,欢迎关注我哦! 在毫无征兆的情况下,从3月31日开始OpenAI大规模封号,而且主要集中在亚洲地区,特别是ip地址在台湾、日本、香港三地的,命中率目测40%。新注册的账号、…...

脂肪酸脂质Myristic acid PEG NHS,Myristic-acid PEG NHS ester,肉豆蔻酸PEG活性酯,具有优异疏水性

一、基础产品数据: 中文名:肉豆蔻酸PEG N-羟基琥珀酰亚胺,肉豆蔻酸PEG活性酯 英文名:Myristic acid PEG NHS,Myristic-acid PEG NHS ester,Myristic acid PEG SE 结构式(Structural)…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式&#xff0c;避免服务器受到各种恶意攻击和网络威胁&#xff0c;那么&#xff0c;服务器硬防通常都会应用在哪些场景当中呢&#xff1f; 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化&#xff1a;从政策驱动到多元盈利 政策全面赋能 2025年4月&#xff0c;国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》&#xff0c;首次明确虚拟电厂为“独立市场主体”&#xff0c;提出硬性目标&#xff1a;2027年全国调节能力≥2000万千瓦&#xff0…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

比较数据迁移后MySQL数据库和OceanBase数据仓库中的表

设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...

AD学习(3)

1 PCB封装元素组成及简单的PCB封装创建 封装的组成部分&#xff1a; &#xff08;1&#xff09;PCB焊盘&#xff1a;表层的铜 &#xff0c;top层的铜 &#xff08;2&#xff09;管脚序号&#xff1a;用来关联原理图中的管脚的序号&#xff0c;原理图的序号需要和PCB封装一一…...