进程 (一)

1. 什么是进程?

        进程就是程序执行的过程,包括创建,调度和消亡,是活的

2. 进程空间如何划分?每个区域的特点?买个区域存放哪些数据?

        文本段:存储代码和指令

        数据段:全局变量,静态变量,字符串常量

                       在编译时分配空间,程序运行时,将a.out数据段加载到内存数据段中

                        程序结束时回收数据段空间

                        未经初始化为0值

        系统数据段:栈区:操作系统管理区域,存放局部变量,执行到变量定义时分配空间,超过

变量作用域回收数据空间

                              堆区:程序员管理的区域,malloc申请,free释放

        内核:操作系统核心区域,用户无法访问,负责内存管理,CPU管理,硬件设备管理,进程

管理,文件系统管理

3. 常见的进程调度算法有哪些?

        先来先执行,后来后执行

        高优先级调度算法

        时间片轮转调度算法

               时间片:CPU在某个进程任务中执行的一段时间

        多级队列反馈

        负载均衡调度算法

4. 进程状态分为哪几种类型?

        R 就绪态:正在运行的任务(没有占用CPU)

        R 运行态:正在运行的任务(占用CPU)

        S 可唤醒等待态:进程挂起等在某个资源到达后继续向下执行

        D 不可唤醒等待态:进程任务挂起直到等到某个信号继续向下执行

        T 暂停态:进程任务挂起,直到CPU发送指令才能继续向下执行

        Z 僵尸态:代码已经执行完毕,空间仍然存在

        X 结束态:代码执行完毕,空间被回收

5. 进程相关的命令有哪些?

        top:根据CPU占用率查看当前所有进程任务

                 PID:唯一识别进程的ID号 ( pid > 0 )

                 PPID:父进程的ID

                 按q退出top命令

        ps -ef:ps -ef | grep a.out 组合命令,查看所有进程中与a.out相关联的内容

        ps -aux:查看进程状态(就绪态、运行态 R、可唤醒等待态 S、不可唤醒等待态 D、停止态

T、僵尸态 Z、结束态 X)

        pstree:查看所有进程的关系

        kill:kill -9 进程PID

        killall -9 进程名

        ./a.out &:在后台执行a.out

6. 如何创建进程?fork和vfork有什么区别?

        在32位操作系统中,会为运行进程开辟0 - 4G虚拟内存空间

        fork() 创建一个新的进程,这个新进程是父进程的副本。它复制了父进程的数据段、代码段和

堆栈。子进程获得与父进程相同但独立的地址空间,任何一个进程对数据的修改都不会影响另一个进

程。

        vfork() 与 fork() 不同,它不复制父进程的地址空间,子进程运行在父进程的地址空间中。保

证子进程先于父进程运行,并且父进程会在子进程调用 exec() 或 exit() 之后才可能被调度运行。如

果子进程在调用这些函数之前依赖于父进程的进一步动作,可能会导致死锁。

7. 什么是僵尸进程?如何产生?如何避免

 什么是僵尸进程?

        进程执行结束,空间没有被回收,就会成为僵尸进程

如何避免产生僵尸进程?

        让父进程先结束,子进程会成为孤儿进程,被init进程收养,子进程结束时,init进程回收子进程空间

         子进程结束,父进程回收子进程空间(wait或者waitpid回收子进程空间)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值