CS162操作系统课程第二课-4个核心OS概念(上)

简介: CS162操作系统课程第二课-4个核心OS概念(上)
熟肉视频地址:


image.png


我们讨论了操作系统如何扮演裁判魔术师粘合剂的角色,裁判是指对于资源保护的管理;魔术师是指我们要让它看起来像我们有一套非常干净易用的资源的抽象,而不是使用实际的没有统一接口的物理资源。粘合剂是一组通用服务,它们使在操作系统上编写程序变得更容易,例如文件系统服务、网络服务等等。

今天我们要讲操作系统四个基本概念:


image.png


我们将从什么是线程(Thread)开始讨论,线程会完整地描述一个程序状态或者一个线性执行上下文,它会有一个程序计数器,寄存器,执行标志,线程栈等等。然后是地址空间(Address Space),这是程序可访问的一组内存地址。然后我们会介绍什么是进程(Process),进程包括地址空间以及一个或者多个线程。最后,我们将讨论在这门课的前期特别重要的硬件机制也就是双模式操作(dual mode operation),即一个典型的处理器至少有两种不同的模式,我们可以松散地称之为内核模式(Kernel mode)和用户模式(User mode)。


image.png


我们要学习如何编写和编译程序成为可执行文件,然后从文件系统中取出这些可执行文件后,建立运行的进程,文件被加载到内存中,我们会详细讨论那个进程运行需要提供的栈和堆。然后是转移控制(Transfer Control),意思是处理器的程序计数器将会指向该进程的用户代码中的指令,然后程序就会开始执行。操作系统需要给这些进程提供各种系统服务,同时操作系统需要保护操作系统和进程不受其他进程和其他用户的影响。


image.png


我们来回忆下 CS61B + CS61C 课程的内容: 处理器一开始有一个程序计数器(PC,Program Counter),还有一个可以读取的内存(Memory),内存里面有一组指令(Instruction)。程序计数器会指向内存中的指令,让处理器读取下一条指令。我们把指令从内存中拉出来,解码,然后把它输入到执行流水线中。我们在 CS61C 中经常谈论的是一种风险类型的处理器(risk style processor),有五个执行流水线。解码后,它们会输入一组寄存器和 ALU 来进行实际操作,然后递增程序计数器并继续下一条指令。


image.png


我们的第一个操作系统概念是一个控制线程(Thread of Control),线程实际上是一个唯一的执行上下文,它有程序计数器,寄存器,执行标志,线程栈,内存状态。线程就像上一张幻灯片中你看到的处理器的虚拟版本。一个线程正在处理器或核心上执行,顺便说一下,我现在混用处理器和核心这两个概念,后面我们就能更清楚地理解这两个概念的区别。但它是在处理器寄存器中常驻(Resident)时才会执行的。寄存器中有线程的上下文(Context)或根状态(Root State),有些东西在寄存器中,剩下的在内存中:

  • 包括一个程序计数器,当前正在执行的指令,程序计数器指向内存中的下一条指令,所有的指令都存储在内存中
  • 包括用于进行计算的中间值
  • 有一个栈指针,它有一个指向内存中栈的顶部的指针,线程的其余部分都在内存中。
    当线程的状态不在寄存器中即不是常驻的时候,线程就被挂起(suspended)或不再执行。被挂起的线程实际上是在内存中,还没有执行或者根本没有执行,有其他线程正在执行。

这是另一个关于执行过程的视图(冯·诺依曼体系)


image.png


这是一组地址,我们稍后会把它叫做地址空间,从 0 到 2^32 -1。里面有一组将要执行的指令,粉色的是你的处理器。进程有一个与之相关的保护状态,处理器包括寄存器和流水线的集合,我们的执行序列(Execution Sequence)包括:在程序计数器上获取一条指令,解码它,执行它,写回寄存器,获取下一条指令,并重复这个执行循环。

那么我们是如何产生多处理器的错觉的呢?我们上次讲过在你的笔记本电脑上做一个ps -aux或者其他的操作唤起任务管理器,如果你仔细看,你会发现有数百个进程在运行,大部分在休眠状态。但它们都可以在你当前的处理器上使用,那么它是如何工作的呢?


image.png


让我们假设只有一个物理处理器上只有一个核,在任何给定的时间在硬件上只有一个执行线程。但现在我们想要的是有多个cpu,或者说是多个cpu同时运行的假象,所以我们可以有多个线程同时运行。从程序员的视图来看是,我有一堆东西都在运行,它们都共享内存。

每个线程是一个虚拟核心,我们这里有三个线程,品红色线程,青色线程以及黄色线程,造成他们同时运行的错觉的方式是通过我们多重复用硬件,我们运行一段时间的品红色线程,然后运行一会青色线程,然后运行一会黄色线程,以此循环。

线程的内容包括什么?显然,每个线程都需要一个程序计数器和一个堆指针,还有所有寄存器状态。如果线程在运行中,寄存器状态就在处理器的寄存器中;如果不在运行中,这些状态就在内存中,被称为线程控制块(TCB,Thread Control Block)

我们举一个例子:


image.png


在 T1 的时候 vCPU1 在运行,在 T2 的时候 vCPU2 在运行,在 T1 和 T2 时,发生了上下文切换(Context Switch),在底层是一个事件,我们把所有的程序计数器,栈指针,所有其他寄存器都保存在内存中的对应线程控制块中。我们从 vcpu2 加载程序计数器、堆栈指针等,然后运行 vcpu2。

一些 Q&A:

  • 每个线程是否都有自己独占的 CPU 缓存?答案是否定的,一般每个核有一个高速缓存,线程都共享同一个缓存,你可以想到如果切换太快,就没有线程能利用好缓存了。原始处理器中的缓存或 TLB 必须在切换时被刷新,更高级的处理器则不会。缓存本身通常在物理空间中,你从一个线程切换到另一个,你只是改变了页表,不需要清空缓存。
  • 线程上下文切换这需要多长时间?这大概需要几微秒的时间,需要确保转换的时间不要太长,不要把大部分时间都花在转换上。

然后是什么触发了上下文切换?全局倒计时器时间到了,或自愿让出CPU等这样的事情触发的。比如某个线程要做一些 I/O,那么操作系统就会调度其他线程。


image.png

相关文章
|
8天前
|
存储 人工智能 运维
|
7天前
|
存储 人工智能 自然语言处理
OS Copilot"作为一款操作系统辅助软件应运而生,旨在提升用户使用电脑的效率
随着AI技术的发展,"OS Copilot"作为一款操作系统辅助软件应运而生,旨在提升用户使用电脑的效率。它具备智能命令建议、代码片段生成、文件管理助手及任务自动化等功能,适合日常办公与专业开发。安装简便,上手容易,能显著提高工作效率。
18 3
|
13天前
|
安全 算法 Unix
深入浅出操作系统:从基础概念到实践应用
【10月更文挑战第22天】本文旨在以浅显易懂的语言,为读者揭开操作系统的神秘面纱。我们将从操作系统的基本概念出发,逐步深入其核心功能与设计哲学,并通过具体代码示例,展示操作系统如何在实际中发挥作用。无论你是计算机科学的学生,还是对技术有浓厚兴趣的爱好者,这篇文章都将为你提供一次轻松愉快的操作系统之旅。
28 4
|
28天前
|
存储 人工智能 自然语言处理
“OS Copilot”的操作系统辅助软件
【10月更文挑战第7天】随着AI技术的发展,"OS Copilot"作为一款操作系统辅助软件,通过智能命令建议、代码片段生成、文件管理助手及任务自动化等功能,极大提升了用户的工作效率,无论是日常办公还是专业开发都提供了强有力的支持。其简洁的安装流程、友好的用户界面和强大的搜索能力,使得这款软件成为提升生产力的得力助手。
37 2
|
1月前
|
Ubuntu Java Linux
Linux操作系统——概念扫盲I
Linux操作系统——概念扫盲I
40 4
|
2月前
|
存储 算法 安全
深入理解操作系统:从基础概念到代码实践
【9月更文挑战第23天】本文将带领读者深入探索操作系统的奥秘,从基础概念出发,逐步揭示操作系统的工作原理和设计哲学。我们将通过实际代码示例,展示操作系统如何与硬件交互、管理资源以及提供用户界面。无论你是计算机专业的学生还是对操作系统感兴趣的开发者,这篇文章都将为你打开一扇通往操作系统世界的大门。
67 16
|
3月前
|
人工智能 弹性计算 自然语言处理
AI奇思妙想之旅 —— 操作系统智能助手OS Copilot
AI奇思妙想之旅 —— 操作系统智能助手OS Copilot
210 1
|
3月前
|
安全 Linux 网络安全
龙蜥Anolis OS:国产操作系统的逆袭之路,它将如何引领中国IT业翻天覆地的变化?揭秘未来数字世界的心脏!
【8月更文挑战第13天】在信息化时代,操作系统作为软硬件桥梁至关重要。国产操作系统如龙蜥Anolis OS,凭借其开源、灵活与安全特性,成为了探索未来发展的重要样本。基于Linux内核的Anolis OS不仅技术先进,生态完善,还针对国内用户习惯进行了优化,并通过如SELinux等安全技术确保系统稳固。其开源属性促进了社区的活跃发展与技术创新。随着政策支持和产业链成熟,Anolis OS正引领国产操作系统走向更广阔的应用领域,加速软硬件生态系统的成型,展现出无限发展潜力。
206 2
|
2月前
|
安全 Linux 网络安全
龙蜥Anolis OS:国产操作系统的逆袭之路,它将如何引领中国IT业翻天覆地的变化?揭秘未来数字世界的心脏!
【9月更文挑战第4天】在信息化时代,操作系统作为计算机系统的核心,连接着上层软件与底层硬件。随着全球化及地缘政治的影响,国产操作系统愈发重要。龙蜥Anolis OS作为佼佼者,基于Linux内核,兼具开源、灵活与安全特性,针对国内用户优化,支持多种编码标准和汉字输入法,提升中文用户体验。其采用角色访问控制、SELinux等技术,保障系统安全。Anolis OS还拥有活跃的开源社区,促进功能完善与创新。随着国家政策扶持和产业链协同,Anolis OS正引领国产操作系统迈向更广阔的应用领域,推动软硬件生态系统的成熟,成为全球多元化计算生态的重要组成部分。
84 0