操作系统原理FAQ请解释发生进程上下文切换时内核如何的工作.docVIP

  • 20
  • 0
  • 约1.09万字
  • 约 11页
  • 2017-08-17 发布于天津
  • 举报

操作系统原理FAQ请解释发生进程上下文切换时内核如何的工作.doc

操作系统原理FAQ请解释发生进程上下文切换时内核如何的工作.doc

操作系统原理FAQ 请解释发生进程上下文切换时,内核如何的工作? 答: 总的来说,操作系统必须保存当前进程的现场、恢复选中进程的现场。现场保存主要包括对CPU寄存器值的保存和已分配内存的保存。 上下文切换还包括与计算机体系结构相关的一些操作,如数据及指令高速缓存(cache)的刷新。 教材习题4.7中子进程里面开始的那段代码是什么意思?看不懂,能否帮忙解答一下? 由图4.11给出的程序使用了Pthread的应用程序编程接口(API),在程序的第c行和第p行分别会输出什么? #include pthread.h #include stdio.h ? int value=0; void?runner(void *param); /* the thread */行 ? int main(int argc, char *argv[]) { int pid; pthread_t tid; pthread_attr_t attr; ? 牋?pid = fork();at 牋?pi 牋?if (pid == 0)爗/* child process */rea 牋牋?pthread_attr_init(attr);ces 牋牋?pthread_create(tid, attr, runner, NULL);p行分 牋牋?pthread_join(tid, NULL);tr, 牋牋?printf(揅HILD: value = %d? value); /* LINE C*/别会输出什 牋?}pr 牋?else if (pid 0) {/* parent process */IN 牋牋牋牋?wait(NULL); 0) { 牋牋牋牋?printf(揚ARENT: value = %d? values */INE); /* LINE P */ ??? } } ? void *runner(void *param) { ???? value=10; ???? pthread_exit(0); } 如果调用的fork返回0,调用子进程runner,Line C输出10;否则父进程直接在Line P输出0 用户级线程和核心级线程的主要区别在哪里?两者在什么情况下各有优劣? 答: 用户级线程直接由应用程序管理,操作系统核心感知不到它的存在,而核心级线程直接由操作系统管理。 用户级线程由线程库(thread library)来调度,而核心级线程由操作系统调度。 核心级线程不需要绑定到一个特定的进程,而用户级线程只属于某个特定的进程。 陷入(trap)和中断有什么区别?它们各有什么用途?  答: 中断是硬件产生的,中断处理程序会被调用来处理中断,然后控制权又根据上下文交还给中断前的程序指令。而陷入是一种软中断。中断用来发信号通知I/O操作的完成以消除循环检测,陷入则被用来唤醒操作系统例程或者捕捉算法错误。 老师能帮忙分析一下下面两个关于文件索引的题目吗?自已理解有些难度哦! (20)设文件索引节点中有7个地址项,其中4 个地址项为直接地址索引,2个地址项是一级间接地址索引,1 个地址项是二级间接地址索引,每个地址项大小为4 字节。若磁盘索引块和磁盘数据块大小均为 256字节,则可表示的单个文件的最大长度是(? )。 A 33KB?? B 519KB C 1057KB D 16513KB? (35)在 UNIX 系统中,文件的物理结构采用直接、一级、二级和三级间接索引技术,其索引结点有 13 个地址(i_addr[0]—i_addr[12]),如果每个盘块,大小为 1K 字节,每个盘块号占 4个字节,那么一个进程要访问文件,第356168字节处的数据时(? )寻址。 A? 可直接? B? 需要一次间接 C? 需要二次间接 D? 需要三次间接?? 块大小为256B,地址项大小为4B,所以每级索引可以存放64个地址,2级间接索引可以存放1*64*64*256B=1024kb,1级间接索引存放2*64*256=32KB,相加即得1056KB+直接索引4*256,刚好1057KB。 同理块大小1kb/4个字节=256个地址,一级索引为1*256*1024=262144+直接10*1024=264192356168,则必须到二级间接索引里面去寻址。 请说明为什么自旋锁不适合于单处理机系统而在多处理机系统中是有用的? 答: 当一个进程欲访问已被其他进程锁定的资源时,进程循环检测该锁是否被释放,这种技术称为自旋锁(spin lock)。施加自旋锁意味着进程一直占用CPU。在单处理机系统中,如果进程循环等待其他进程释放锁,因为系统只有一个CPU,拥有锁的进程无法得到CPU而释放该锁,因此,该进程应该阻塞,而不是循环等待。而在多处理机系统中,循环等待被其他进程施加的锁是可行

文档评论(0)

1亿VIP精品文档

相关文档