深入理解计算机系统 Chapter01 | 计算机系统漫游-下

简介: 深入理解计算机系统 Chapter01 | 计算机系统漫游-下

1.操作系统管理硬件


真正操纵硬件的是操作系统,操作系统可以看成是应用程序和硬件之间的中间层。所有的应用程序对硬件的操作必须通过操作系统来完成,这样做的目的是:首先,防止硬件被失控的应用程序所滥用;其次,操作系统提供统一的机制来控制这些复杂的底层硬件。

57.jpg

操作系统管理硬件


为了实现操作系统对硬件的操纵,操作系统引入了几个抽象的概念。文件是对IO设备的抽象、虚拟内存是对内存和磁盘IO的抽象、进程是对处理器、内存及IO设备的抽象


56.jpg

                                           操作系统的抽象机制

2.进程的解释


(1).以shell命令行中执行./hello命令为例进行说明,最开始的时候只有shell进程在运行,即shell在等待命令行的输入。


55.jpg

                                                           命令输入

(2).当通过shell进程加载hello进程时,shell进程通过系统调用来执行我们的请求。系统调用会将控制权从shell进程传递给操作系统,操作系统保存shell进程的上下文。然后,创建一个新的hello进程及其上下文。接着,将控制权转交给新的hello进程。hello进程执行完成后,操作系统会恢复shell进程的上下文,并且将控制权交给shell进程,之后shell进程继续等待下一个命令的输入。


54.jpg

                                                进程上下文切换


上下文:操作系统会跟踪进程运行中所需要的所有状态信息,这种状态(例如:当前PC和寄存器的值、内存中的内容等)称为上下文。


3.线程的解释


现代操作系统中一个进程由多个线程组成,每个线程都运行在进程的上下文中,共享代码和数据。


52.jpg

                                                          线程


4.虚拟内存


操作系统为每个进程提供了一个假象,即每个进程都在独自占用整个内存空间。每个进程看到的内存都是一样的,称之为虚拟地址空间。


51.jpg

                                                进程的虚拟地址空间

进程的虚拟地址空间:从下往上,地址是增大的。


  • 第一个区域:用来存放程序的代码和数据的,这个区域的内容是从可执行目标文件中加载而来的。对所有进程来说,代码都是从固定的地址开始的;
  • 第二个区域:堆heap,函数malloc所申请的地址空间就在这个堆中的,堆可以在运行时动态的扩展和收缩;
  • 第三个区域:共享库的存放区域,这个区域存放C语言的标准库和数学库这类共享库的代码和数据;
  • 第四个区域:用户栈,函数调用的本质就是压栈;
  • 第五个区域:为内核保留的区域,应用程序的代码不能读写这个区域的数据,也不能直接调用内核中定义的函数,这个区域对应用程序不可见;


5.文件


Linux中一切皆文件,键盘、鼠标、磁盘、显示器,甚至网络这些都可以看成是文件,系统中所有的输入和输出都可以通过读写文件来完成。


50.jpg

                                                     "一切皆文件"


6.参考资料


[1].本文图片来源,侵权必删:https://www.bilibili.com/video/BV1cD4y1D7uR?p=3&spm_id_from=pageDriver

相关文章
|
存储
【计算机组成原理】计算机硬件的基础组成、认识各个硬件部件
计算机组成原理(一) 计算机内部是通过电信号传递数据 电信号:分为高电平和低电平,分别代表1/0
342 0
|
6月前
|
存储
计算机组成原理(8)----专用数据通路
计算机组成原理(8)----专用数据通路
164 1
|
6月前
|
存储 人工智能 并行计算
计算机架构:漫游CPU的奥秘世界(二)
计算机架构:漫游CPU的奥秘世界
158 0
|
6月前
|
存储 人工智能 缓存
计算机架构:漫游CPU的奥秘世界(一)
计算机架构:漫游CPU的奥秘世界
146 0
|
存储 BI 芯片
#j计算机组成原理# chapter 3 系统总线(上)
#j计算机组成原理# chapter 3 系统总线
206 1
#j计算机组成原理# chapter 3 系统总线(上)
|
存储 Unix 编译器
深入理解计算机系统-第1章计算机系统漫游笔记
计算机系统是由硬件和系统软件组成,它们共同工作来运行应用程序。C 语言是系统级编程的首选,同时它也非常实用于应用级程序的编写。
129 0
#j计算机组成原理# chapter 3 系统总线(中)
#j计算机组成原理# chapter 3 系统总线
136 0
#j计算机组成原理# chapter 3 系统总线(中)
#j计算机组成原理# chapter 3 系统总线(下)
#j计算机组成原理# chapter 3 系统总线
132 0
#j计算机组成原理# chapter 3 系统总线(下)
|
芯片
#计算机组成原理# chapter 2 计算机的发展和应用
#计算机组成原理# chapter 2 计算机的发展和应用
84 0
#计算机组成原理# chapter 2 计算机的发展和应用
|
存储
#计算机组成原理# chapter 1 计算机系统概论(下)
#计算机组成原理# chapter 1 计算机系统概论
255 0
#计算机组成原理# chapter 1 计算机系统概论(下)