zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    【Ansible】 各种模块
    【Python】 linecache模块读取文件
    【Ansible】 基于SSH的远程管理工具
    【Python】 更棒的Excel操作模块xlwings
    【Python】 docker-py 用Python调用Docker接口
    【Docker】 Swarm简单介绍
    【Docker】 积累
    【Bootstrap】 一些提示信息插件
    配置 -- php运行报Call to undefined function curl_init()的解决办法
    windows下svn钩子实现每次提交更新至web目录
  • 原文地址:https://www.cnblogs.com/derek-dhw/p/11104542.html
Copyright © 2011-2022 走看看