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

简介: CS162操作系统课程第二课-4个核心OS概念(下)

进程实际上是一个权利受限的执行环境,我们讲过,简单的虚拟线程有这样的问题,每个线程都能访问每个线程的内存,内存翻译机制可以保护我们可以访问的内存,即一个受保护的内存块。它被操作系统中的一个实体独占,这个实体叫做进程。它包括一个受限的地址空间和一个或多个线程,它拥有一些文件描述符和文件系统上下文。


进程提供了内存保护抽象,在保护和效率之间有一个基本的权衡,如果你在同一个进程中有一堆线程,它们之间可以很容易地通信,因为它们共享相同的内存,它们可以通过一个写入内存,另一个读取内存来通信,但是它们之间可能会互相覆盖导致并发安全问题。有时候你想要高性能,提高并行性,你会想要在一个进程中有很多线程。但是当你想要保护时,你想要限制进程之间的通信,所以进程之间的通信故意变得更加困难,这就是我们得到保护的方式。


image.png


这是一个单线程的进程还有一个多线程的进程。对于单线程的进程,只有一组寄存器还有栈内存。对于多线程的进程,代码段,数据,文件是共享的,但是每个线程有独立的寄存器还有栈。当我们从一个线程切换到另一个线程时,为了给人一种多处理的错觉,我们需要从第一个线程切换出寄存器,这样我们就能从第二个线程把它们加载回来。

线程封装了并发性,为什么进程要用多线程?

  • 一个是并行性(Parallelism)。如果你有多个核,通过在同一个进程中有多个线程,可以让许多任务同时处理。
  • 另一个是为了并发(Concurrency)。并发性就是大多数线程大部分时间都在休眠的情况,比如某个线程需要做一些 I/O,开始 I/O 时进入睡眠,然后在 I/O 完成时醒来,那么 CPU 不必等待 I/O 完成,而是可以做其他的事情。这就是多线程的好处。

那么为什么我们需要进程来保证可靠性、安全性和隐私性呢?


image.png


  • 对于可靠性:Bug 只会覆盖一个进程的内存,恶意的或者被破坏的进程不能干扰其他进程。
  • 对于安全还有隐私性:进程不能修改其他进程的内存
  • 公平性:共享磁盘,CPU 等资源。

这个保护主要通过翻译机制实现的,每个进程地址空间通过翻译机制映射到物理内存,这个翻译是进程本身不可控的。那么操作系统是如何保证进程无法修改页表从而影响翻译呢?这就引入了下一个话题:双模式操作(Dual-mode Operation)


image.png


image.png


硬件至少提供了两种模式:内核模式(Kernel mode,或管理模式 Supervisor mode)和用户模式(User mode)。当你在用户模式下运行时某些操作会被禁止,比如当你在用户模式时你不能改变你使用的页表,这只有在内核模式下的操作系统才能做到。在用户模式下还不能禁止中断,这样,一个如果想计算PI最后一位的进程就不能阻止其他进程在计时器结束时获得CPU时间。在用户模式下你也被阻止直接与硬件交互等等,因此不能破坏磁盘上的文件。


我们小心控制的用户模式和内核模式之间的转换的是什么?包括系统调用(System call),中断,异常等等。如上图中的流程所示,我们有用户进程,它们对内核进行系统调用,从用户模式切换到内核模式执行系统调用中对应的操作,完成后退出内核模式,系统调用返回。


image.png


这是一个典型的Unix系统结构中各个模式分别包含什么的表格:

  • 用户模式包含你所有的程序和库等等。
  • 系统调用:表示可以安全访问各种资源的代码。
  • 内核模式包含:信号处理,I/O 系统,文件系统,块交换 I/O 系统,磁盘驱动,CPU 调度,页交换,虚拟内存管理等等。内核通过接口访问并控制硬件。


image.png


举个例子,我们有硬件有内核模式和用户模式。硬件可能会 exec 创建一个新进程。用户模式下的系统调用会进入内核模式,执行完操作后返回用户模式。中断可能导致用户模式进入内核,然后可能检查硬件比如 I/O 就绪,最终从中断中返回。在你除以零或者发生一个页面错误,会发生一个异常,导致进入内核模式,然后最终返回。

总共有三种可能触发用户模式到内核模式转换的操作类型:


image.png


  • 系统调用:
  • 调用一个系统服务,例如 exit 退出进程
  • 函数调用,但是涉及访问进程外的一些资源
  • 目前没有系统函数需要的内存地址
  • RPC 远程函数调用
  • Marshall 寄存器中的系统调用id和参数并执行系统调用


  • 中断:
  • 外部异步事件触发上下文切换,例如,定时器,I/O设备


  • Trap 或者异常:
  • 内部同步事件触发上下文切换
  • 例如,违反保护(segmentation fault),除以零,…


如果你注意到这里有两个进程,一个绿色的,一个黄色的。灰色的代表的是操作系统的内存。

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