【备考面试题】计算机系统

1.进程和线程的区别

(1)调度。进程时资源的分配单位,线程作为调度和分派的单位。在同一进程内,线程的切换不会引起进程的切换,而只有由一个进程中的线程切换到另一个进程中的线程时,才会发生进程切换。

(2)并发行。一个进程内的多个线程同样可以并发执行,因为系统具有更好的并发性。

(3)系统资源。在引入线程的操作系统中,线程称为被调度和分派的基本单位。基本不拥有资源,只有一些运行必需的资源,如程序计数器,一组寄存器和栈,但它可以和进程内其他线程共享进程所拥有的全部资源,即代码段,数据段,以及系统资源如文件描述符,I/O设备等等。

(4)系统开销。在创建和撤销进程时,系统都要进行资源分配和回收,如内存空间,I/O设备等,因此操作系统需要的时空开销显著大于线程创建和撤销的开销。在进程进行切换时,涉及当前进程的进程映像的保存,以及新选择进程的进程映像设置,而线程的切换只需保存和设置少量的寄存器内容,并不涉及存储器管理方面的操作。同一进程内多个线程具有相同的地址空间,因而线程之间的同步和通信也变得更加容易。

摘自《操作系统教程》范策 李畅主编。

2.线程私有栈空间

线程栈空间是开辟在进程的堆区域的。注意不是开辟在进程的栈区域。

每个线程维护一个控制块
{

void * stackaddr; //线程栈的位置
size_t stacksize; //线程栈的大小

}

每个线程有自己的执行堆栈,程序计数器,通用寄存器组和状态标记。

此处总结不完善,留待日后知识更加完备时来补充。

3.说说虚拟地址空间

1.为什么需要?
(1)主存和磁盘通信的数据交互的效率很低。虚拟存储器把主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传送数据,通过这种方式高效使用主存。
(2)为每个进程提供一致的地址空间,从而简化了存储器管理。
(3)它保护了每个进程的地址空间不被其他进程破坏。

2.如何工作?
从页表,地址翻译,虚拟存储器与物理存储器,页命中与缺页这几个方面回答。

3.具体说说每个linux进程的虚拟存储器
包括哪些区域,每个区域特征

4.fork后父进程和子进程的栈变量,堆变量,全局变量,静态变量,常量是私有还是公有的?

全都是私有的。

当调用fork函数后,内核为新进程创建各种数据结构,并分配给它一个唯一的PID,所以是一个完整的进程。为了给这个新进程创建虚拟存储器,它创建了当前进程的mm_struct,区域结构和页表的原样拷贝,然后把两个进程的每个页面都标记为只读,并将两个进程中的每个区域结构都标记为私有的写时拷贝.进程进行写操作时,写时拷贝机制就会创建新页面.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值