Berkley CS162 操作系统第一课文字版-课程介绍(中)

简介: Berkley CS162 操作系统第一课文字版-课程介绍(中)

操作系统,什么是"操作"呢?在早期,当你打电话时,他们实际上必须把你插到正确的连接上,让电线连接起来;然后是早期的计算机,需要计算机操作员,他们基本上是长时间坐在这些大机器前的人,确保它运行正常,然后就会操作系统了。这个“操作”系统就是要保证磁盘运行正确,网络运行正常,或者显卡等等都运行正常。


image.png


那是什么构成了一个"系统"呢?一个系统是由许多相互关联的部分组成的,一般来说,他们协作实现的要比各部分本身的功能大得多,每个相互关联的部分都可能与其他部分相互作用,当然,复杂度也变成了至少是 n 的平方。我们必须想出 api 和其他聪明的技术来避免 n 平方的复杂度,因为事情已经足够复杂了。对于这些 api 的使用以及理解就是系统编程,系统编程是这门课很重要的一部分,在这门课上你会接触很多的系统编程。


image.png


对于硬件/软件接口:你有一个处理器,在处理器里有寄存器,这些寄存器指向内存的一部分,这样程序就能运行了;可能处理器里面还有缓存,但它并没有很大,缓存的作用就是让内存和磁盘这些大容量但是访问较慢的看上去可以像寄存器访问一样快,通过一定的缓存设计。在虚拟内存的设计中,还有页表和翻译后备缓冲可以帮助我们。当然还有各种存储,例如内存还有磁盘。还有有各种各样的设备,比如网络、显示器和输入等等。这些纷杂的硬件都有自己的复杂的硬件接口,但是操作系统将这些复杂的硬件接口统一抽象成软件接口,供应用程序使用。比如抽象出了处理器的计算元素,把一堆存储设备,比如磁盘,u盘和云存储,变成一个单一的抽象即文件系统,这样应用就可以很容易地使用而不用关心其中的内容(每一位数据)实际存储的位置。这些也是这门课的核心内容。


image.png


操作系统充当的第一个角色,就是魔术师这样一个角色。它会提供简单明了的物理资源抽象,它会以一种方式让你至少暂时认为你拥有无限的内存,你有一台完全专用于你的机器或一个处理器,它有更高级的对象,如文件、用户和消息。这样会让你写代码更容易写,例如如果没有文件这个对象,那么你操作的就是磁盘上的一堆块,而文件是磁盘上一堆单独的块的抽象,它们以某种方式与 inodes(索引节点)放在一起,形成一个文件。


image.png


这是一台普通的物理机,它有内存,有I/O,可能还有存储和网络。在它上面我们会放一个操作系统,我们现在正在学习这个。操作系统将处理器资源抽象成一个非常简洁的东西,即线程(Thread);我们将会有地址空间(Address Space),我们将会学习的不是在 DRAM 中分散在各处的一堆内存字节,而是一个干净的地址空间抽象,这将使我们能够把内存当作完全属于我们的,即使有多个程序在运行。我们将会有文件(File),而不是一堆单独的磁盘上的块。我们将会有套接字(Socket),而不是直接操作网卡。在这些线程,地址空间,文件和套接字之上,将会有进程(Process)抽象,这个进程抽象将给我们一个由操作系统提供的受限权限的执行环境,在里面跑我们编译好的程序。为了给你一个干净的环境来进行编程使用这些抽象资源,会有系统库(System Libraries)

为什么抽象这些中间层是必要的:如果你试图去掉所有中间层直接操作底层(有时在非常特殊的环境中会这样做),你会发现特别麻烦,因为不同的底层硬件接口是不一样。这些抽象虽然对于性能有一点点损耗,但是带来的是统一接口统一代码的便利性。


image.png


系统库被链接到你的程序中,然后由编译器运行,然后被转换成在程序中运行的机器码,然后在进程环境中执行它们。


image.png


在进程中有什么:

  • 一个进程有一个地址空间,也就是一块受保护的内存
  • 它有一个或多个线程,访问上面那些地址空间
  • 其他的系统状态(system state):包括打开的文件和套接字等等


image.png


这里有一个例子,是 MAC 系统的例子,你可以查看进程监视器或任务管理器。类似于或者你在 Linux 机器上面执行 ps -aux。你会发现,在你的机器上,有很多很多的进程在运行。大多数都在 sleep,但他们会在某一时刻唤醒,执行一些任务。


image.png


这是操作系统对于多个进程的管理,每个进程都有自己的一组线程、地址空间、文件和套接字,它们可能会运行一个带有自己链接库的程序,并且这些进程实际上互相保护自己不受其他进程影响的。操作系统将底层的硬件接口转换成应用程序接口,每个程序都有自己的进程,进程是一个受保护的运行环境


image.png


操作系统的另一个角色即裁判,管理进程之间的资源的隔离以及共享。

我们接下来看一个简单的例子,假设这个例子中只有一个处理器


image.png


假设我们有编译好的程序 1 (棕色)和程序 2(绿色),我们只有一个处理器(Processor,一个核心 core,我们目前认为一个处理器只有一个核心,在后续的课程中可能会有多核的情况,这里先不考虑),那么操作系统怎么让这两个程序看起来同时在运行呢?首先每个程序都有自己的进程,每个进程都有自己的全局唯一进程描述符(Process Identifier)。在内存中,进程 1 有自己的内存空间(棕色),进程 2 也有自己的内存空间(绿色),同时,内存中还有灰色的代表操作系统使用的一些内存空间。然后,处理器里面做的就是不断地进程切换,先从一个开始,例如进程 1,这时候处理器执行的就是程序 1 的代码,处理器中的寄存区保存的是程序 1 需要的内容,访问的就是进程 1 的内存空间。

相关文章
|
Linux 图形学 Windows
嵌入式课程实现Linux操作系统LVGL移植操作
嵌入式课程实现Linux操作系统LVGL移植操作
|
弹性计算 运维 监控
进阶课程:在 ACK 中如何使用容器优化的操作系统|学习笔记(二)
快速学习进阶课程:在 ACK 中如何使用容器优化的操作系统
进阶课程:在 ACK 中如何使用容器优化的操作系统|学习笔记(二)
|
安全 Unix 调度
CS162操作系统课程第二课-4个核心OS概念(下)
CS162操作系统课程第二课-4个核心OS概念(下)
CS162操作系统课程第二课-4个核心OS概念(下)
|
安全 物联网 数据安全/隐私保护
CS162操作系统课程第二课-4个核心OS概念(中)
CS162操作系统课程第二课-4个核心OS概念(中)
CS162操作系统课程第二课-4个核心OS概念(中)
|
存储 缓存 程序员
CS162操作系统课程第二课-4个核心OS概念(上)
CS162操作系统课程第二课-4个核心OS概念(上)
CS162操作系统课程第二课-4个核心OS概念(上)
|
2月前
|
安全 Linux 数据安全/隐私保护
Vanilla OS:下一代安全 Linux 发行版
【10月更文挑战第30天】
82 0
Vanilla OS:下一代安全 Linux 发行版
|
10天前
|
弹性计算 自然语言处理 Ubuntu
OS Copilot-操作系统智能助手-Linux新手小白的福音
OS Copilot是由阿里云推出的操作系统智能助手,专为Linux新手设计,支持自然语言问答、辅助命令执行等功能,极大提升了Linux系统的使用效率。用户只需通过简单的命令或自然语言描述问题,OS Copilot即可快速提供解决方案并执行相应操作。例如,查询磁盘使用量等常见任务变得轻松快捷。此外,它还支持从文件读取复杂任务定义,进一步简化了操作流程。虽然在某些模式下可能存在小问题,但总体上大大节省了学习和操作时间,提高了工作效率。
75 2
OS Copilot-操作系统智能助手-Linux新手小白的福音
|
2天前
|
弹性计算 运维 Ubuntu
os-copilot在Alibaba Cloud Linux镜像下的安装与功能测试
我顺利使用了OS Copilot的 -t -f 功能,我的疑惑是在换行的时候就直接进行提问了,每次只能写一个问题,没法连续换行更有逻辑的输入问题。 我认为 -t 管道 功能有用 ,能解决环境问题的连续性操作。 我认为 -f 管道 功能有用 ,可以单独创建可连续性提问的task问题。 我认为 | 对文件直接理解在新的服务器理解有很大的帮助。 此外,我还有建议 可以在非 co 的环境下也能进行连续性的提问。
27 7
|
3天前
|
存储 运维 安全
深入解析操作系统控制台:阿里云Alibaba Cloud Linux(Alinux)的运维利器
本文将详细介绍阿里云的Alibaba Cloud Linux操作系统控制台的功能和优势。
23 5
|
4天前
|
安全 大数据 Linux
云上体验最佳的服务器操作系统 - Alibaba Cloud Linux | 飞天技术沙龙-CentOS 迁移替换专场
本次方案的主题是云上体验最佳的服务器操作系统 - Alibaba Cloud Linux ,从 Alibaba Cloud Linux 的产生背景、产品优势以及云上用户使用它享受的技术红利等方面详细进行了介绍。同时,通过国内某社交平台、某快递企业、某手机客户大数据业务 3 大案例,成功助力客户实现弹性扩容能力提升、性能提升、降本增效。 1. 背景介绍 2. 产品介绍 3. 案例分享