【6】linux中的进程

【6】linux中的进程

ID:44283865

大小:2.69 MB

页数:71页

时间:2019-10-20

【6】linux中的进程_第1页
【6】linux中的进程_第2页
【6】linux中的进程_第3页
【6】linux中的进程_第4页
【6】linux中的进程_第5页
资源描述:

《【6】linux中的进程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Linux中的进程1?问题?计算机中什么时候开始有进程的?计算机中的第一个进程是谁?用户的第一个进程是谁?所有的进程间有什么联系?亲属、同步2主要内容linux系统进程启动过程1linux下的用户进程编程2linux信号量操作33一、linux系统进程启动过程(了解)开机系统启动(系统进程初始化)用户登陆(用户进程运行)BIOS41.计算机出厂后已有的东西两个重要芯片,一个空白硬盘1)BIOS(BasicInput/OutputSystem)一组程序(保存着计算机最重要的基本输入输出的程序、系统设置程序

2、、开机后自检程序和系统自启动程序。)固化到计算机内主板上一个ROM芯片。2)CMOS:系统配置参数(计算机基本启动信息,如日期、时间、启动设置等)保存在主板上一块可读写的RAM芯片。生活中常将BIOS设置和CMOS设置混说,实际上都是指修改CMOS中存放的参数。正规的说法应该是“通过BIOS设置程序对CMOS参数进行设置”。52.安装操作系统到硬盘系统安装过程会规划硬盘(分区),写入数据(系统启动程序写入MBR,操作系统程序写入主分区)。MBRDPTOS主引导扇区:位于整个硬盘的0磁头0柱面1扇区,共5

3、12字节,包括:①硬盘主引导记录MBR(MasterBootRecord)446字节。检查分区表是否正确以及确定哪个分区为引导分区,并在程序结束时把该分区的启动程序(也就是操作系统引导扇区)调入内存加以执行。②硬盘分区表DPT(DiskPartitionTable)64字节。一共64字节,按每16个字节作为一个分区表项,它最多只能容纳4个分区,DPT里进行说明的分区称为主分区。+结束标志“55,AA”(2字节)主引导分区硬盘结构相关阅读63.启动并使用机器加电开机BIOS(ROM中的BIOS读CMOS中

4、的参数,开始硬件自检,找引导程序启动系统)存在硬盘主引导扇区MBR里的引导程序被启动,装载操作系统内核程序内核程序启动了解内核启动过程需看linux源代码,不同的内核版本启动相关的文件不同,感兴趣的同学可阅读相关资料。详细参阅本页备注内核启动相关阅读7如何从系统进程过渡到用户使用总之,从源码分析看,内核经历关键的一些.s(汇编程序)和.c程序启动后,最后会开始用户进程的祖先——init。init进程在Linux操作系统中是一个具有特殊意义的进程,它是由内核启动并运行的第一个用户进程,因此它不是运行在内核

5、态,而是运行在用户态。它的代码不是内核本身的一部分,而是存放在硬盘上可执行文件的映象中,和其他用户进程没有什么两样。那么如何从内核过渡到init进程?见如下示意图:8后面学习完fork等系统调用后再返回头看这里你会理解更多0号进程1号内核线程调用kernel_thread调用init()利用execve()从文件/etc/inittab中装入可执行程序init1号用户进程init追根溯源:0号进程——系统引导时自动形成的一个进程,也就是内核本身,是系统中后来产生的所有进程的祖先。所有进程的祖先所有用户进

6、程的祖先0号进程1号内核进程9当用户进程init开始运行,就开始扮演用户进程的祖先角色,永远不会被终止。所以:计算机上的所有进程都是有上下亲属关系的,他们组成一个庞大的家族树。观察linux下的进程间父子关系:pstree以树状结构方式列出系统中正在运行的各进程间的父子关系。psax-opid,ppid,command1011二、linux下的用户进程编程进程运行与内存密不可分,进程:pcb+代码段+数据段(数据+堆栈)系统确信init进程总是存在的,用户进程如果出现父进程结束而子进程没有终止的情况,那

7、么这些子进程都会以init为父进程,而init进程会主动回收所有其收养的僵尸进程的内存。12Linux进程状态及转换fork()TASK_RUNNING就绪TASK_INTERRUPTIBLE浅度睡眠TASK_UNINTERRUPTIBLE深度睡眠TASK_STOPPED暂停TASK_ZOMBIE僵死占有CPU执行do_exit()schedule()ptrace()schedule()当前进程时间片耗尽等待资源到位sleep_on()schedule()等待资源到位interruptible_slee

8、p_on()schedule()资源到位wake_up_interruptible()或收到信号wake_up()资源到位wake_up()收到信号SIGCONTwake_up()linux进程状态13进程生命周期中的系统调用Fork()-父亲克隆一个儿子。执行fork()之后,兵分两路,两个进程并发执行。Exec()-新进程脱胎换骨,离家独立,开始了独立工作的职业生涯。Wait()-等待不仅仅是阻塞自己,还准备对僵死的子进程进行善后处理。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。