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

学堂在线_操作系统_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/16972122icon-default.png?t=M5H6https://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实验

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

你可能感兴趣的:(操作系统OS,linux)