学堂在线_操作系统_notes_第0-2讲_OS概述、OS实验环境准备
-
20220626.No.1821
-
操作系统OS 综合了 C语言 + 数据结构与算法DSA + 计算机组成。

OS 是 控制程序 + 资源管理器。

硬件——操作系统——应用软件。

操作系统 = Shell + GUI + Kernel。

OS的特征:
【1】并发(管理多个同时运行的程序);
【2】共享(多个程序并发运行时,宏观上貌似“同时”访问资源,微观上任一时刻只有一个程序通过数据总线访问资源);
【3】虚拟(OS的高频交替运行 使每个用户感觉只有自己一人占用机器);
【4】异步(程序的执行走走停停,只要用户的输入一致,则程序的输出结果不变)。
-
OS领域的顶级会议:
(1)SOSP——ACM SIGOPS 操作系统原理研讨会;
(2)OSDI——USENIX操作系统设计和实现研讨会。

SIGOPS Hall-of-Fame Awards:
论文必须发表在同行评议的文献中至少十年,
到目前为止有三十多篇论文获奖,
http://www.sigops.org/award-hof.html
-
OS系列:(1)UNIX BSD 系列;(2)Linux系列、Android系列;(3)Windows系列。
-
20220627.No.1822
-
OS的演变:单用户系统 -> 批处理系统(辅助系统完成数据输入输出操作,CPU完成更有价值的操作,节约CPU运算资源)、多程序系统(提高OS利用效率,减少CPU闲置时间) -> 分时(多作业交替运行,减少单一作业的等待时间,节约用户时间) -> 个人计算机(易用性,例如图形用户界面) -> 分布式计算(网络支持、安全性、高可靠性)。
-
OS的结构:
(1)简单结构——MS-DOS;
(2)分层结构(可移植性,UNIX系统)—— 硬件 -(汇编语言)...OS...(C语言)- 用户接口;
(3)微内核结构(Microkernel)——(分层结构的层次越多,功能越多,OS越复杂,于是OS效率越低,所以最好把OS内核提供的服务放入用户态以提高效率),在OS内核中 只保留 进程间通信(LPC)与 对硬件支持(HAL)。用户态应用程序之间的通信 必须经过 Kernel。当代OS是分层结构与微内核结构的混合体,所以某些OS的某一功能可能在A版本OS的Kernel中,也可能在B版本OS的用户态中。
(4)外核结构(Exokernel)——对Microkernel结构的改进,在Microkernel的基础上,给Kernel保留更少功能。Kernel仅用于 与硬件安全绑定,并为应用程序分配资源。OS的其他功能放在 操作系统库(libOS),供应用程序使用。Exokernel更像 虚拟机。
(5)虚拟机管理器(VMM)——VMM把 真实硬件 虚拟成 若干虚拟硬件。
真实硬件 <-> VMM <-> OS <-> 应用软件。VMM负责隔离硬件资源,OS负责管理硬件资源。

-------------------

OS实验教学现状:
MIT设计2个OS(7000行以下),先让学生阅读xv6系统,再改进JOS系统。
-
OS实验课 大量采用开源软件,方便且利用理解细节。
实验环境:Linux/Windows
源码阅读工具:understand
源码文档自动生成工具:Doxygen
编译环境:gcc,make,Binutils
真实/虚拟运行环境:X86机器或QEMU
调试工具:改进的QEMU+(GDB O.R. IDE)
IDE工具:Eclipse-CDT
-
实验内容——
1 OS启动、中断与设备管理:     0200~1800行
2 物理内存管理:         1800~2500行
3 虚拟内存管理:         2500~3200行
4 内核线程管理:         3200~3600行
5 用户进程管理:         3600~4300行
6 处理器调度:          4300~5100行
7 同步互斥:           5100~6400行
8 文件系统:           6400~9999行
-
(1)硬件层——模拟x86架构,包含CPU、主存、各种外设;
(2)内核态(OS Kernel)——bootloader(引导加载程序)加载OS,让OS在主存中运行、管理硬件资源(主存(物理内存、虚拟内存)、CPU(内核线程、用户进程、处理器调度、同步互斥)、外设);
(3)用户态——各种应用软件使用Kernel提供的服务。
-
内存管理 -> 用户进程创建;
中断 -> 系统调用(用户进程管理);
内核线程切换 -> 用户进程调度。

---

OS实验环境搭建:
【1】安装实验环境——在虚拟机上使用安装好的ubuntu实验环境——
https://www.xuetangx.com/learn/XT0809003778220103/jfjhczxt/10217625/video/16972122https://www.xuetangx.com/learn/XT0809003778220103/jfjhczxt/10217625/video/16972122
(1)下载安装VirtualBox虚拟机软件——
https://www.virtualbox.org/
虚拟机镜像链接: https://pan.baidu.com/s/11Zxyws2HM8I0v_YoJsSrcw 提取码: ekzd
(2)VirtualBox软件和虚拟硬盘文件压缩包等信息可查询——
https://github.com/chyyuu/os_course_info
(3)解压压缩包后,可得到如下内容(大约4GB多)——
\mooc-os\mooc-os.vbox
\mooc-os\mooc-os.vbox-prev
\mooc-os\mooc-os.vdi
(4)用户名是 moocos  口令是 <空格键>。
【2】使用实验工具——
(1)shell命令:ls、cd、rm、pwd、mkdir、find
         基于bash (Bourne-Again SHell)
         完成对文件、目录的基本操作。
(2)系统维护工具:apt、git
         apt:安装管理各种软件。
         git:开发版本维护软件。
(3)源码编辑工具:Eclipse-CDT、understand、gedit、vim
         Eclipse-CDT:基于Eclipse的C/C++集成开发环境
              跨平台、丰富的分析理解代码的功能
              可与qemu结合,联机源码级Debug uCore OS。
         Understand:跨平台、丰富的分析理解代码的功能
               Windows上有类似的sourceinsight软件。
         gedit:Linux中的常用文本编辑
               Windows上有类似的notepad
         vim: Linux/unix中的传统编辑器
               类似有emacs等
               可通过exuberant-ctags、cscope等实现代码定位。
(4)源码比较工具:diff、meld
         比较不同目录或不同文件的区别
         diff是命令行工具,使用简单。
         meld是图形界面的工具,功能相对直观和方便。
(5)开发编译调试工具:gcc 、gdb 、make
         gcc:C语言编译器。
         gdb:执行程序调试器。
         make:软件工程管理工具
              make命令执行时,需要一个 makefile 文件,以告诉make命令如何去编译和链接程序。
(6)硬件模拟器:qemu
         qemu可模拟多种CPU硬件环境,本实验中,用于模拟一台intel x86-32的计算机系统。
【3】参考资料——
■ apt-get
    http://wiki.ubuntu.org.cn/Apt-get%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97
■ gcc
    http://wiki.ubuntu.org.cn/Gcchowto
    http://wiki.ubuntu.org.cn/Compiling_Cpp
    http://wiki.ubuntu.org.cn/C_Cpp_IDE      http://wiki.ubuntu.org.cn/C%E8%AF%AD%E8%A8%80%E7%AE%80%E8%A6%81%E8%AF%AD%E6%B3%95%E6%8C%87%E5%8D%97
■gdb

http://wiki.ubuntu.org.cn/%E7%94%A8GDB%E8%B0%83%E8%AF%95%E7%A8%8B%E5%BA%8F
■ make & makefile
    http://wiki.ubuntu.com.cn/index.php?title=%E8%B7%9F%E6%88%91%E4%B8%80%E8%B5%B7%E5%86%99Makefile&variant=zh-cn
■ shell
    http://wiki.ubuntu.org.cn/Shell%E7%BC%96%E7%A8%8B%E5%9F%BA%E7%A1%80
    http://wiki.ubuntu.org.cn/%E9%AB%98%E7%BA%A7Bash%E8%84%9A%E6%9C%AC%E7%BC%96%E7%A8%8B%E6%8C%87%E5%8D%97
■ understand
    http://blog.csdn.net/qwang24/article/details/4064975
■ vim
    http://www.httpy.com/html/wangluobiancheng/Perljiaocheng/2014/0613/93894.html
    http://wenku.baidu.com/view/4b004dd5360cba1aa811da77.html
■ meld
    https://linuxtoy.org/archives/meld-2.html
    类似的工具还有 kdiff3、diffmerge、P4merge
■ qemu
    http://wenku.baidu.com/view/04c0116aa45177232f60a2eb.html
■ Eclipse-CDT
    http://blog.csdn.net/anzhu_111/article/details/5946634

-
x86-32硬件:80386
(1)4种运行模式(实模式、保护模式、SMM模式、虚拟8086模式);
(2)地址(物理内存地址空间、线性地址空间、逻辑地址空间);
(3)CPU寄存器(通用寄存器(EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP)、段寄存器(CS、DS、ES、SS、FS、GS)、指令指针寄存器(EIP)、标志寄存器(EFLAGS(IF标志位、CF标志位、PF标志位、ZF标志位))、控制寄存器、系统地址寄存器、调试寄存器、测试寄存器)。
-
Q6:熟悉基本的git命令行操作命令,从github上 的 http://www.github.com/chyyuu/ucore_lab 下载 ucore lab实验

--------------------

学堂在线_操作系统_notes_第0-2讲_OS概述、OS实验环境准备相关推荐

  1. python交互式程序设计导论答案第五周_学堂在线_计算机科学与Python编程导论_章节测试答案...

    学堂在线_计算机科学与Python编程导论_章节测试答案 更多相关问题 素描的三种表现形式是:(). 运行下列程序:Private Sub form_Click()For i = 1 To 2x = ...

  2. 计算机编程导论python程序设计答案-学堂在线_计算机科学与Python编程导论_作业课后答案...

    学堂在线_计算机科学与Python编程导论_作业课后答案 答案: 更多相关问题 近代中国完全沦为半殖民地半封建社会的标志是:A.<马关条约>B.<辛丑条约>C.<凡尔赛和 ...

  3. python 学堂在线_(3.17学堂在线python学习笔记)

    @[TOC](3.17学堂在线python学习笔记) # 重要笔记 ## Assertion和控制流的关系 1. 在python中,抛出异常作为一种检测和控制代码流的重要方式 2. 一个例子帮我们理解 ...

  4. 学堂在线_大数据机器学习_小笔记

    学堂在线大数据机器学习小笔记 20220607 - https://www.xuetangx.com/learn/THU08091001026/THU08091001026/10333105/vide ...

  5. python 学堂在线_(3.7学堂在线python学习笔记)

    @[TOC](3.7学堂在线python学习笔记) # 重要笔记 1. 启发式算法 启发式算法(heuristic algorithm)是相对于最优化算法提出的.一个问题的最优算法求得该问题每个实例的 ...

  6. 学堂在线-清华大学-操作系统实验Lab1【练习1-2】

    实验手册:https://chyyuu.gitbooks.io/ucore_os_docs/content/ 练习1:理解通过make生成执行文件的过程 1. 操作系统镜像文件ucore.img是如何 ...

  7. 学堂在线-清华大学-操作系统实验Lab1【练习5-6】

    练习5:实现函数调用堆栈跟踪函数 (需要编程) 我们需要在lab1中完成kdebug.c中函数print_stackframe的实现,可以通过函数print_stackframe来跟踪函数调用堆栈中记 ...

  8. 计算机控制系统期末测试,学堂在线计算机操作系统考试题及答案

    一.单项选择题(每题1分,共20分)(更多试题及答案,尽在优题宝) 1.操作系统的发展过程是(  C    ) A.原始操作系统,管理程序,操作系统 B.原始操作系统,操作系统,管理程序 C.管理程序 ...

  9. 学堂在线-清华大学-操作系统实验Lab1【练习3-4】

    练习3:分析bootloader进入保护模式的过程. BIOS将通过读取硬盘主引导扇区到内存,并转跳到对应内存中的位置执行bootloader.请分析bootloader是如何完成从实模式进入保护模式 ...

最新文章

  1. Squid下Http头信息优先级
  2. laravel Transformers中修改data键
  3. python要学多久-python要学多久
  4. Linux系统篇-文件系统虚拟文件系统
  5. 线性代数学习笔记(几何版)
  6. [网络安全自学篇] 八.Web漏洞及端口扫描之Nmap、ThreatScan和DirBuster原理详解
  7. 企业如何采用机器学习
  8. jdbc ?占位符不起作用_JDBC高级(二):DbUtils
  9. 关于Meta标签中format-detection属性及含义
  10. python method_用实例分析Python中method的参数传递过程
  11. 【每日算法Day 108】一道简单的二叉树题目,写法还是挺多的。
  12. C++常识之——C++中堆和栈的区别,自由存储区、全局/静态存储区和常量存储区...
  13. jQuery学习笔记03
  14. cameralink解码编码FPGA代码定制
  15. 十级解读比特大陆内部信:比特大陆正在走向「詹克团化」
  16. 离线数据开发之任务调度系统
  17. 静态空间管理和动态空间管理
  18. Vue3中Compositions API的使用(二)
  19. 电脑操作精典秘籍60式【实用】
  20. web开发中常用的几种统计图使用

热门文章

  1. Unit03: URL 、 HTTP 协议 、 HTTP优化
  2. 在线mp3剪辑php源码,傻瓜式音乐剪辑工具,这个在线网站实在太香!
  3. 地址总线是单向还是双向_粪便自动化检验技术(三)多项目联检及双向通讯技术...
  4. [激光原理与应用-48]:《焊接质量检测》-5-德擎先进激光过程诊断系统ALPAS分析
  5. 【三相潮流】基于仿射区间的,含分布式电源的配电网三相潮流算法
  6. Word怎么删除由分节符、分页符、分栏符、表格等导致的空白页
  7. python 20行代码爬取王者荣耀全英雄皮肤
  8. uboot-----borad.c .
  9. 【Gazebo仿真·一】Gazebo + Moveit + ur5e机械臂仿真
  10. neo4j-admin 海量数据入库教程研究