进程概念

进程是什么?
    我们所写的叫程序,程序是死的,存放在硬盘,运行起来的程序叫进程,程序运行起来需要被加载到内存。
    站在操作系统的角度看进程,进程就是操作系统对进程的描述,而这个描述有一个名字叫PCB(process control block进程控制块),linux下PCB有自己的名字叫做task_struct
    操作系统如何管理进程:就是task_struct结构体描述进程,使用了双向链表将这些结构体组织起来进行管理
 进程的描述信息都有哪些?
     标识符(PID),状态,内存指针,优先级,程序计数器,上下文数据,文件状态信息,记账信息cpu的分时机制--时间片 
如何查看进程:
   /proc       存放进程信息
    ps -ef     查看所有进程信息,如果查看3027   例 ps -ef|grep 3027
    ps  aux    查看进程信息
    getpid()  在代码中获取进程pid
如何去创建一个进程: 
    使用fork系统调用通过复制调用进程来创建一个新进程,调用的新进程,创建出来的新进程称之为子进程
    fork函数:对于父进程来说,返回值是子进程的pid
                    对于子进程来说,返回值为0
    因为子进程是以父进程为模板来创建的,因此父子进程的代码段是完全一样的,也就是说,他们运行的程序是一样的我们用户就是通过对返回值的判断来分辨父子进程,来进行代码分流父子进程返回值不同,父子进程公用同一个代码段,但是他们的数据并不共用

僵尸进程:
     产生原因:子进程先于父进程退出,它要保留退出原因在pcd中,因此退出后不会自动释放所有资源,子进程退出后操作系统会通知父进程这个家属说子进程退出了,你去获取一下原因,然后完全释放子进程资源,假如父进程不管子进程的退出状态,那么这个子进程将进入将死状态,成为僵尸进程。
     危害:资源泄漏。
孤儿进程:   

     父进程先于子进程退出,那么子进程将成为孤儿进程,并进入后台运行。
     父进程变为init进程,也就是说,子进程如果后来退出了,init进程将负责释放资源,init进程非常负责任,因此,孤儿进程不会成为僵尸进程。

进程的优先级:
     为什么要有进程优先级?
     因为进程的功能各有不同因此对CPU资源的要求也各有不同,因此针对进程的调度就有了优先级,优先级决定了cpu资源的优先分配权
     nice
     renice
     PRI=PRI+NI;     通过NI的值来修改优先级
     竞争性/独立性/并行/并发
环境变量:
     概念:用于在操作系统中设置环境参数的一些变量
     特性:这些环境变量具有全局特性
     echo env set unset export
     extern char **environ;    main函数第三个参数   getenv("PATH")
进程虚拟地址空间: 
    什么是地址?
        地址是指向内存区域的编号,每一个进程都有4G的进程地址空间。
        虚拟地址空间实际是一个mm_struct结构体描述的,因此程序地址空间应该叫进程的虚拟地址空间
        因为我们获取到的地址都是虚拟地址,而不是真正的物理内存地址
        而访问虚拟地址是通过页表转换映射之后得到物理内存地址进而访问到内存的
        页表还有一个重要功能就是内存访问控制
        父进程创建子进程这里需要注意一个写实拷贝技术
进程调度:

  • 调度方式:
  1.   剥夺方式:当一个进程正在运行时,系统可以基于某种原则,剥夺已分配给他的处理机,将之分配给其他进程,剥夺原则有:优先权原则、短进程优先原则、时间片原则。
  2.   非剥夺方式:分配程序一旦吧处理机分配给某进程后便让他一直运行下去,知道进程完成或发生事件而阻塞时,才把处理机分配给另一个进程。
  • 进程调度算法有:

1、先来先服务调度算法(FCFS,first come first served):谁第一个排队,谁就先被执行,在它执行过程中,不会中断它;
2、短作业优先调度算法(SJF,shortest job first):对预计执行时间短的进程有限分配处理机,通常后来的短进程不会抢先正在执行的进程;对长进程非常不利,可能长时间得不到执行。
3、最高响应比优先法(HRRN,highest response radio next):对于FCFS和SJF的平衡,FCFS方式只考虑每个作业的等待时间而未考虑执行时间的长短,而SJF只考虑了执行时间而未考虑等待时间的长短,因此两种算法在某种极端的情况下会带来某些不便。HRRN通过综合这两种情况算出响应比R,根据响应比完成调度。优点:长作业也有机会投入运行,缺点:每次调度前要计算响应比。
4、时间片轮转法(RR,Round-Robin):采用剥夺方式,每个进程被分配一个时间段,按照在队列中的顺序交替执行;不利于处理紧急作业。
5、多级反馈队列(multilevel feedback queue): 
UNIX使用这种调度算法;进程在进入待调度的队列等待时,首先进入优先级最高的Q1中等待;首先调度优先级高的队列中的进程。若高优先级队列中已经没有调度的进程,则调度次优先级队列的进程;同一队列中的各个进程按照时间片轮转调度;在低优先级队列中的进程在运行时,又有新到达的作业,那么在运行完这个时间片后,CPU马上分配给新到达的作业(剥夺)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值