文章目录

  • P1 计算机概论
    • 什么是操作系统?
  • P2操作系统上的程序
    • tmux 快捷键操作
    • 数字逻辑电路:模拟器
    • 状态机和数码管实现
    • 程序
      • C语言视角
    • 二进制程序
      • 构造最小的 Hello, World
    • 最小的 HolloWorld程序
    • 编译器与编译优化
    • 操作系统的一般程序
    • 总结

P1 计算机概论

什么是操作系统?



P2操作系统上的程序

  • 补ppt ppt

tmux 快捷键操作

  • https://www.jianshu.com/p/01a18efe2552

数字逻辑电路:模拟器

#define REGS_FOREACH(_)  _(X) _(Y)
#define RUN_LOGIC        X1 = !X && Y; \Y1 = !X && !Y;
#define DEFINE(X)        static int X, X##1;
#define UPDATE(X)        X = X##1;
#define PRINT(X)         printf(#X " = %d; ", X);int main() {REGS_FOREACH(DEFINE);while (1) { // clockRUN_LOGIC;REGS_FOREACH(PRINT);REGS_FOREACH(UPDATE);putchar('\n'); sleep(1);}
}

状态机和数码管实现

  • 看文档

  • gcc a.out | python3 seven-seg.py

  • http://jyywiki.cn/OS/2022/slides/2.slides#/2/2

  • py代码 接受每一个输入 然后显示

  • 通过 || 将c程序的输出作为py程序的输入

程序

  • 程序 == 状态机
  • gdb a.out 进入调试状态
  • layout src 进入 用 c的方式
  • layout asm 用汇编的形式进入
  • start 运行 s 下一步 info frame 查看栈帧

C语言视角

C 程序的状态机模型 (语义,semantics)

状态 = 堆 + 栈
初始状态 = main 的第一条语句
迁移 = 执行一条简单语句
任何 C 程序都可以改写成 “非复合语句” 的 C 代码

  • 函数调用 : 创建栈帧 pc ++

  • 函数返回 消除栈帧

  • 本质仍然是计算

二进制程序


构造最小的 Hello, World

int main() {printf("Hello, World\n");
}
  • gcc 编译出来的文件不满足 “最小” --verbose 可以查看所有编译选项 (真不少)
    printf 变成了 puts@plt -static 会复制 libc

  • 汇编实现 :http://jyywiki.cn/pages/OS/2022/demos/minimal.S

最小的 HolloWorld程序

  • 程序== 状态机 == 二进制代码 = 状态机
  • 如果想让程序退出 就必须得有一段系统调用 syscall

补充知识点

  • retq 的行为 : pop 栈顶内容弹出给到PC
  • 栈是由寄存器 rsp控制的

编译器与编译优化

  • 什么是正确的编译?
  • 编译的优化 : 没有对状态机状态进行修改f的语句能删
  • C代码 -> 汇编代码
  • c编译器 code = compile(S) S; 源代码
void foo() {int x = 1;
}



  • compiler barrier 将可以合并的代码划分开了

操作系统的一般程序

总结

【2022南京大学操作系统(蒋岩炎)】(一)操作系统概述 | 操作系统上的程序相关推荐

  1. 操作系统-南京大学(蒋岩炎)课程--操作系统上的程序

    操作系统-南京大学(蒋岩炎) 工具: gdb, strace: 理解程序运行时的系统调用 1.程序的状态机模型(和编译器) 1⃣️状态机和数字电路 2.操作系统上的程序

  2. 操作系统原理第一章:操作系统概述

    目录 1 操作系统概念 1.1 为什么要有操作系统 1.2 什么是操作系统 1.3 计算机系统部件 1.4 操作系统设计的目标 1.5 操作系统的其他定义 2 操作系统的发展 2.1 操作系统的历史 ...

  3. 操作系统概论【一】 - - 操作系统概述

    感谢内容提供者:金牛区吴迪软件开发工作室 文章目录 一:什么是操作系统? 操作系统的定义: 操作系统的作用: 二:操作系统的发展 1.单道批处理系统: 单道处理系统的特点: 单道处理系统的缺点: 2. ...

  4. [南京大学2022操作系统-蒋炎岩-P1] 笔记 - 操作系统概述

    国外教授花了时间造了一个 ENIAC 模拟器供学生体验 课本: OSTEP 参考书: CSAPP

  5. 操作系统原理——第2章 操作系统概述

    2.1 操作系统的目标和功能 操作系统是控制应用程序执行的程序, 并充当应用程序和计算机硬件之间的接口. 它有三个主要目标: 方便 有效 扩展能力 2.1.1 作为用户/计算机接口的操作系统 计算机接 ...

  6. 操作系统概述 操作系统第一章知识点归纳总结

    系列文章 第二章 进程的描述与控制 第二章 进程调度 第一章 概述 1.1 目标与功能 1.1.1 操作系统: 控制应用程序的程序 应用程序和硬件间的接口 三大目标: 方便:用户使用 有效:使用系统资 ...

  7. linux 写操作系统 pdf,Linux操作系统概述.pdf

    Liux操作系统 一.概述 教材和参考资料 • E-Learning上将提供课程ppt以及部分文字资料 • L命令行与脚本编程大全 (第3版),R B,C B著, 门佳 .武海峰译, 人民邮电出版社 ...

  8. 操作系统文件管理_计算机民科笔记-操作系统week1

    FBI WARING [到处抄的,抄PPT和书上还有大佬博客的] 操作系统概述 操作系统做了什么? 比如启动一个程序,可以通过命令行,或者鼠标双击程序等方式来执行,操作系统在收到指令后,检查该程序是不 ...

  9. 2022年R1快开门式压力容器操作考题及答案

    题库来源:安全生产模拟考试一点通公众号小程序 2022年R1快开门式压力容器操作培训试题为R1快开门式压力容器操作题库考前押题密卷!2022年R1快开门式压力容器操作考题及答案根据R1快开门式压力容器 ...

最新文章

  1. centos 扫毒软件clamAV安装
  2. 消除危害 让BYOD策略更安全的几个秘诀
  3. golang 生成 指定大小 空白文件
  4. android 7.0 更新apk,Android更新apk兼容7.0和8.0
  5. Cloud for Customer的work center显示逻辑
  6. argparse:shell向Python中传参数
  7. pagehelper插件oracle,带你学习最简单的分页插件PageHelper
  8. 资源放送丨《OGG日常运维及故障处理》PPT视频
  9. 在springboot中,如何读取配置文件中的属性
  10. rust怎么关阳光指令_我家也有庭院多好,伸缩阳光房装上,能休闲能当车库,还不算违建...
  11. mysql 删除hash分区_MySQL-如何删除hash表分区
  12. 树状结构搜索功能_ICLR 2020 高分论文!利用稀疏多层次Transformer结构获取语法树!...
  13. juc-并发工具类源码解析
  14. px,em,rem单位转换工具
  15. 本科计算机软件类毕业论文写作那些事
  16. 视频教程-【跟一夫学设计】从0基础到精通学全套coreldraw x7轻松掌握CDR基础加案例学习视频教程-CorelDraw
  17. 开源社与 Dev.Together 2022
  18. 1.SD卡初始化、写入、读取、数据比较
  19. C#实现域账号密码登录
  20. java 图片 内存溢出_Java修改图片尺寸,总是报内存溢出怎么解决?

热门文章

  1. 如何看懂MOS管的各项参数
  2. (cocos2d-js游戏)测试你的反应速度----------基本逻辑(上)
  3. Unity——基于HoloLens的混合现实开发之功能实现
  4. PowerPmac上位机开发C#(二)_启动与关闭界面设计
  5. 如何使用 Django 进行测试驱动开发,我来告诉你
  6. 离散序列周期延拓 matlab
  7. 操作系统-文件的结构以及文件管理
  8. 万里数据库与中仪集团达成合作
  9. 最新重点关注区块链技术,发现以太坊(etherenum)的技术进行两次分叉etz和etf。
  10. 页面嵌套iframe怎么调用父页面的方法,子页面回调父页面函数方法