码迷,mamicode.com
首页 > 其他好文 > 详细

Unix高级环境编程学习小结(二)

时间:2019-06-28 20:56:27      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:相同   内核   友好   不用   realloc   thread   修改   竞争   编程学习   

进程环境:

  有8种方式使进程终止,五种为正常终止:

  (1)main返回

  (2)调用exit

  (3)调用_exit或_Exit

  (4)最后一个线程返回

  (5)从最后一个线程调用pthread_exit()

  异常终止有三种:

  调用abort

  接到一个信号(异常信号)

  最后一个线程对取消请求作出响应。

 

C程序的存储空间分配:

  malloc:分配制定字节数(sizeof)的存储区,此存储区中的初始值不确定。

  calloc :分配指定长度,指定数量的存储区,每一位都初始化为0

  realloc:增加或减少以前分配区的长度,增加长度时,可能需要移动到另外一个足够大的区域。

Fork函数的工作原理:

  fork主要用来创建进程,在fork之后经常跟随者exec,所以现在的很多实现并不执行一个父进程数据段、栈和堆的完全副本,作为替代,使用了写时复制的技术,这鞋区域由父进程和子进程共享,内核将权限改为只读,如果父进程和子进程中的任一个试图修改这些区域,内核就会为这块区域单独创建一个副本,用来修改。所以子进程中修改数据是不影响父进程的。

  文件描述符方面,在重定向父进程的标准输出是,子进程的标准输出也被重定向,因为fork的一个特性是父进程的所有打开的文件描述符都被复制到子进程中,父进程和子进程的每个相同的打开描述符共享一个文件表项。所以,当父进程和子进程同时写如一个文件,又没有同步操作时,就会产生混乱。

竞争条件:

  当多个进程都企图对共享数据进行某种处理,而最后的结果又取决于进程运行的顺序时,我们就认为发生了竞争条件。

 

进程调度:

  调度策略和调度优先级是由Unix内核确定的,进程可以通过调整nice值选择以不同的优先级运行,nice值越高,优先级就越低,因为你越友好,就越不用多给你分配资源,资源会分配优先给那些不友好的进程,保证他们顺利运行。

       进程可以设组合为进程组,进程组有组长进程,组长进程可以创建一个进程组,创建该组中的进程,终止进程。

  多个进程组可以组成一个会话, Session

Unix高级环境编程学习小结(二)

标签:相同   内核   友好   不用   realloc   thread   修改   竞争   编程学习   

原文地址:https://www.cnblogs.com/derek-dhw/p/11104542.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!