Unix高级环境编程学习小结

Posted derek-dhw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unix高级环境编程学习小结相关的知识,希望对你有一定的参考价值。

进程环境:

  有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高级环境编程学习小结的主要内容,如果未能解决你的问题,请参考以下文章

《UNIX环境高级编程》这本书怎么看?怎么学习

unix环境高级编程学习笔记

UNIX环境高级编程第十七章

Unix环境高级编程 调试程序

unix高级环境编程看了能写项目吗

Unix环境高级编程书上的第一个例程如何运行(附代码)