现在的位置: 首页 > 综合 > 正文

进程和线程

2013年08月24日 ⁄ 综合 ⁄ 共 613字 ⁄ 字号 评论关闭

 

进程的要素:
首先,要有剧本就是代码,供进程去执行的代码实体。
其次,私有财产也就是系统堆栈空间。
再次,有财产登记证且有户口的功效也就是进程结构task_struct。
最后,独立的3g空间也就是用户空间。
注:
如果具备前三条缺第四条就是线程了。
如果完全没有用户空间就是内核线程。
如果有共享的用户空间就是用户线程。
如果在一个进程中用pthread_creat创建的所谓“线程”,
跟这里的线程概念是两码事,因为其不作为一个调度单位,
受内核调度。(个人观点请指正:))。
linux中第一个进程是被捏造出来的,之后才复制为多个真正的进程。
linux在为每个进程分配空间的时候,实际上分了两页,而不是sizeof(task_struct),
因为其中包括系统堆栈的空间大约7kb,且属于静态分配所以中断处理程序,软中断处理程序等不能
嵌套太深,局部变量不宜过大而冲破这个堆栈。
当进程在系统空间运行的时候需要访问自己的task_struct,这时候linux通过:
return (struct thread_info *)(sp & ~(THREAD_SIZE - 1));语句实现。
当前系统堆栈的指针与上THREAD_SIZE - 1即可。
假设系统堆栈从0xc3450000开始,则这个地址指向task_struct,当sp=0xc3451000的时候,与上FFFFE000仍然是这个0xc3450000值。(好像是这个意思的,为什么要8k对其啊?谁能告诉我啊)

抱歉!评论已关闭.