还剩2页未读,继续阅读
文本内容:
Linux思考题
51.fork()和clone()二者之间的区别是什么?答fork创建一个进程时,子进程只是完全复制父进程的资源,复制出来的子进程有自己的task_struct结构和pid但却复制父进程其它所有的资源通过fork创建子进程,需要将上面描述的每种资源都复制一个副本fork调用执行一次返回两个值,对于父进程,fork函数返回子程序的进程号,而对于子程序,fork函数则返回零,这就是一个函数返回两次的本质在fork之后,子进程和父进程都会继续执行fork调用之后的指令系统调用fork和vfork是无参数的,而clone则带有参数fork是全部复制,vfork是共享内存,而clone是则可以将父进程资源有选择地复制给子进程,而没有复制的数据结构则通过指针的复制让子进程共享,具体要复制哪些资源给子进程,由参数列表中的clone_flags来决定另外,clone返回的是子进程的pid
2.什么是进程?什么是线程?Linux系统中的进程有那些状态?如何获取系统中各进程的状态?答进程是指在系统中正在运行的一个应用程序;线程是系统分配处理器时间资源的基本单元,或者说进程之内独立执行的一个单元对于操作系统而言,其调度单元是线程一个进程至少包括一个线程,通常将该线程称为主线程一个进程从主线程的执行开始进而创建一个或多个附加线程,就是所谓基于多线程的多任务Linux系统中的进程状态有TASK_RUNNING运行状态,TASK_INTERRUPTIBLE可中断睡眠状态,TASK_UNINTERRUPTIBLE不可中断的睡眠状态,TASK_STOPPED暂停状态,TASK_NONINTERACTIVE不可交互睡眠状态,TASK_DEAD死亡状态,EXIT_ZOMBIE僵死进程,EXIT_DEAD僵死撤销状态ps查看静态的进程信息可以使用man来查看ps的使用参数以下是几个常使用到得,a显示当前终端的所有进程信息u使用以用户为主的格式输出进程信息x显示当前用户在所有终端下的进程信息-e显示系统内的所有进程#ps只显示当前用户打开的进程]#psaux显示系统中所有进程信息
3.Linux系统中进程有...。