Linux内核学习(二)

“从一个业内人士的视角来欣赏和理解Linux内核的设计和实现之美。”

进程:是处于执行期的程序以及相关的资源的总称。完全可能存在两个或多个不同的进程执行的是同一个程序。并且两个域两个以上并存的进程还可以共享许多诸如打开的文件、地址空间之类的资源。父进程调用fork()系统产生子进程。

在现代操作系统中,进程提供两种虚拟机制:虚拟处理器虚拟内存

虚拟处理器:虽然实际上可能是许多进程正在分享一个处理器运算资源,但虚拟处理器给进程一种假象,让这些进程觉得自己在独享处理器。

虚拟内存:让进程在分配和管理内在时觉自己拥有整个系统的所有内存资源。

任务队列(task list):内核把进程的列表存放在任务队列的双向循环链表中链表中的每一项都是为task_struct(在32位机器上它大约有1.7KB)、称为进程描述符的结构,该结构定义在<linux/sched.h>文件中。进程描述符中包含一个具体进程的所有信息。


进程描述符及任务队列

进程的状态:进程描述符中的state域描述了进程的当前状态。系统中的每个进程都必然处于五种进程状态中的一种。

TASK_RUNNING(运行)----进程是可执行的,或者它正在执行,或者在运行队列中等待执行。

TASK_INTERRUPTIBLE(可中断)----进程正在睡眠(阻塞),等待某些条件的达成。

TASK_UNINTERRUPTIBLE(不可中断)----就算是接收到信号也不会被唤醒或准备投入运行。

__TASK_TRACED----被其他进程跟踪的进程。

__TASK_STOPPED(停止)----进程停止执行

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 又来到了一个老生常谈的问题,应用层软件开发的程序员要不要了解和深入学习操作系统呢? 今天就这个问题开始,来谈谈操...
    tangsl阅读 4,164评论 0 23
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,869评论 18 139
  • 文/卡兰诺 爱情埋在心灵深处,并不是住在双唇之间 --- 丁尼生 1 小安这几天心情很不好,父母又吵架了,父母的关...
    卡兰诺阅读 599评论 7 25
  • 身边新结识的小伙伴们每每得知我学习周易,常是两眼圆瞪,觉得不可置信!慢慢熟识之后,确认国丽确实是一个周易学习...
    国丽PollyZ阅读 714评论 1 3
  • 几世同船渡 一朝共枕眠 白头仍豆蔻 冷雨也红颜
    诗泉阅读 389评论 8 9