摘要:
栈空间:用户栈和内核栈 程序的执行流程 进程其实都是在执行任务,而任务其实就是函数定义的(函数也称为方法、子程序等,本质都一样),所以进程的作用就是不断的执行函数。程序启动时,第一个要执行的函数是main()函数(有些语言隐藏了这个函数,但任何程序一定会有一个程序入口函数),然后在main()函数中 阅读全文
posted @ 2020-03-03 20:41
星火撩原
阅读(1523)
评论(0)
推荐(1)
摘要:
进程的地址空间布局:分段 Linux的虚拟地址空间采用“分段+分页”结合的方式实现。先看分段,之后再介绍分页。 分段是将内存划分成各个段落(Segment),每个段落的长度可以不同,且虚拟地址空间中未使用的空间不会映射到物理内存中,所以操作系统不会为这段空间分配物理内存。这样的话,内核为刚创建的进程 阅读全文
posted @ 2020-03-03 20:36
星火撩原
阅读(812)
评论(0)
推荐(0)
摘要:
资源隔离:虚拟内存 前面描述的所有操作系统基础知识都是进程和CPU资源相关的内容,另一个操作系统中和进程相关的比较重要的话题是内存资源。 操作系统主要目的是执行程序,而程序在执行时,程序自身以及程序所访问的数据、所产生的数据都在内存里(至少所有数据的流向都会经过内存)。此外,现代操作系统可以同时运行 阅读全文
posted @ 2020-03-03 20:33
星火撩原
阅读(303)
评论(0)
推荐(0)
摘要:
CPU的归属:Idle进程 操作系统并不总是繁忙。例如个人PC上任务比较轻,多数时候都无法充分利用CPU,导致CPU处于空闲状态。但CPU既然通电了,它就得运行,那么在它没有任务需要执行的时候,CPU在干嘛呢? 操作系统提供了一个称为idle的进程(也可能idle处于某个永不退出的内核式进程内,而不 阅读全文
posted @ 2020-03-03 20:31
星火撩原
阅读(1008)
评论(0)
推荐(0)
摘要:
操作系统的服务端口:系统调用 用户进程工作在用户态,它是受限的,很多涉及到硬件的操作都无法执行,但是它们又想要取得结果,就只能请求工作在内核态的操作系统帮助完成这些操作,并将操作结果交给用户进程。 系统调用(system call)就是操作系统提供给用户进程请求操作系统做一些特权操作的接口,即为用户 阅读全文
posted @ 2020-03-03 20:27
星火撩原
阅读(269)
评论(0)
推荐(0)
摘要:
要想在任何需要的时候回到操作系统,这相当于是改变了CPU的正常执行流程,所以一个非常熟悉的字眼——中断(Interrupt)就出现了。通过中断,可以保证回到操作系统,从而将CPU的控制权交给操作系统。 中断的字面意思就是打断正常执行流程,但是注意,它表示的是打断流程而不是终止流程,这是不同的概念。中 阅读全文
posted @ 2020-03-03 20:19
星火撩原
阅读(483)
评论(0)
推荐(0)
摘要:
限制进程:内核态和用户态 进程可分为两种类型。一是操作系统自身运行时的内核类进程,也称为操作系统进程。另一种即非内核类进程,不是操作系统自身的进程,而是想要实现某些功能,用户自己去启动的程序产生的进程,也称为用户类进程或用户进程。 操作系统自身也是一个程序,它启动之后也有很多内核进程在后台工作,而且 阅读全文
posted @ 2020-03-03 11:45
星火撩原
阅读(156)
评论(0)
推荐(0)
摘要:
假象:“并行”运行多个进程 现代操作系统都支持多任务同时执行。在这里,操作系统对我们用户“营造了一种假象”,让CPU看上去是用不完的,能够不断地添加新的程序使它们同时运行。 但每核CPU在某一时刻都只能执行一个进程。使用操作系统的人是不会去关注CPU是单核还是多核的,每个人都希望操作系统能同时运行多 阅读全文
posted @ 2020-03-03 11:33
星火撩原
阅读(326)
评论(0)
推荐(0)

浙公网安备 33010602011771号