alicemare / ideas

用Issue来记录一些简单的笔记?
0 stars 0 forks source link

关于操作系统的复习 #15

Open alicemare opened 5 years ago

alicemare commented 5 years ago

并行:同一时刻,有多条指令在多个处理器上同时执行。

并发:同一时刻,只能有一条指令执行,但多个进程指令被快速轮换执行,使得在宏观上具有多个进程同时执行的效果。

alicemare commented 5 years ago

进程一般具有以下4大要素:

1、有一段程序供其执行(该程序可以多个进程共用)。

2、有专用的系统堆栈空间。

3、在内核中有对应的进程控制块。

4、有独立的存储空间,意味着拥有专有的用户空间。

线程相对于进程而言,只具备了前面3条,而缺第四条。

特别的:

如果完全没有用户空间,就称为内核线程。

如果共享用户空间,则称为用户线程。

进程的颗粒度比线程大,线程共享了进程的上下文。

alicemare commented 5 years ago

可重入代码? AB分别需要访问全局变量i,A要操作五次而B只需赋值一次,在A执行中如果发生中断去执行b那么返回时A就无法得到正确结果,称为不可重入 可重入函数就是那种执行期间被中断,重新恢复到断点继续执行时内部数据在任何情况下都不会发生改变的函数。 与进程不同的是,多个线程共享同一个进程的地址空间,切换的前后会保存上下文环境。问题来了,既然保存了上下文环境,怎么还会出现依赖的环境发生了改变的现象呢?这是因为中断时保存的上下文环境仅限于返回地址、寄存器等少量的上下文,而函数内部使用的全局变量、static 静态变量、缓存等并不在保护之列。因此,如果这些值在函数中断期间发生了改变,那么当函数返回断点继续运行时产生的结果就不可预料了。可重入的场景多存在于多个进程同时调用,而线程安全是多存在于多个线程同时调用。

alicemare commented 5 years ago

[ ] 运行在内核态的内核线程共享操作系统内核态中的一个页表。 √ [ ] 操作系统创建用户进程时需要为此用户进程创建一个内核栈用于执行系统调用服务等。 √ [ ] 单处理器场景下,可以通过打开和关闭中断的机制来保证内核中临界区代码的互斥性。 √

alicemare commented 5 years ago

需要通过页表管理整个128MB的物理内存,则页表总共需要占用(____)KB的内存空间。

1024。一个页面4KB,共有128MB/4KB=215 个页面,也就是215 个页表项,每个页表项占4B,故需要215 *4B =220bit=1024KB的内存空间。