第
四
章
作
业
参
考
答
案
4.1是,同一进程中的线程切换比起不同进程中的线程切换,需要存储的状态信息更少。同时,同一进程的线程共
享同一地址空间,可用共享变量直接通信,比进程通信的效率更高,且内存管理数据不必切换,所以同一进程中的
线程切换比起不同进程中的线程切换开销更少。
4.2用户级线程对内核来说不可见,操作系统的调度单位而是进程。
4.4在这个环境中用户级进程和内核线程是一对一的映射关系。在单处理器中,单线程程序一旦产生系统调用,那
么处理器需要等待系统调用完成才能继续处理余下程序,或者进行进程切换,而对于多线程程序来说,一旦某个线
程产生系统调用,那么处理器可以进行线程切换,处理其他的线程。因为线程切换开销比进程切换低,所以能够有
效提高处理器利用率,使得多线程程序运行的更快。
4.5不会,进程退出时候,占用的资源会被释放,包括进程控制块、用户地址空间等。
4.7
a:计算链表中结点值大于0的个数。
b:会,global_positives可能在并发执行的过程中得到了不正确的值。
4.9
a.两个线程交替输出“.”和“o”,同时分别给myglobal+120次
b.不符合,期望输出40,由于两个线程共享myglobal,可能存在父线程给myglobal+1时,子线程也给myglobal=j并
覆盖了myglobal的值,这样导致只加了一个1,使得输出不符合期望。(期望应该是两边都对myglobal进行修改,使
得值加2)
评论0