zoukankan      html  css  js  c++  java
  • Linux 多进程多线程相关概念

    进程:可执行程序是存储在磁盘设备上的由代码和数据按某种格式组织的静态实体,而进程是可被调度的代码的动态运行。在Linux系统中,每个进程都有各自的生命周期。在一个进程的生命周期中,都有各自的运行环境以及所需的资源,这些信息都记录在各自的进程控制块中,以便系统对这些进程进行有效的管理,进程控制块的结构如下图所示:

    每个进程都有各自独立的虚拟地址空间,空间的大小与所基于的硬件体系结构有关。虚拟空间中各区代表的意义,代码段存储指令序列和只读数据,多个进程实例可共享代码段。数据段用来存放全局变量和静态变量。堆区域用于程序的动态内存管理,new或者malloc申请的内存就位于堆中。栈用来存放进程运行过程中的局部变量,函数返回地址,参数和进程上下文环境。

    线程:引入进程是为了解决程序并发执行的问题,而引入线程是为了减少程序并发所带来的时间和空间的开销,线程是比进程更小的单位,一个进程至少有一个线程,线程是操作系统进行调度的基本单位,线程基本上不占用系统资源,线程与其他同属一个进程的线程共享该进程所占有的资源。

    应用编程接口(相关头文件和参数类型可通过man命令查看,关于api使用的细节和编程中要注意的事项各书籍上都有,再次不赘述)

    进程环境  

    getuid   获得当前进程实际用户ID

    geteuid   获得当前进程有效用户ID

    getgid        获得当前进程实际用户组ID 

    getegid      获得当前进程有效用户组ID

    getpid  获得当前进程ID

    getppid   获得父进程ID

    getpgrp     获得进程组ID

    setpgid      设置进程组

    getsid   获得进程会话ID

    setsid        设置进程会话ID

    getenv       获取环境表量

    putenv  设置环境表量

    进程地址空间

    malloc   申请内存

    free       释放内存

    brk    设置堆区域大小

    进程的创建与终止

    fork  创建子进程

    exit        终止进程

    atexit     注册终止处理程序

    加载可执行二进制映像

    exec

    进程的同步控制

    wait    暂停执行直到一个子进程结束

    waitpid   等待指定子进程结束

    线程

    1. pthread_equal     //判断线程是否相同
    2. pthread_self        //返回调用线程的ID
    3. pthread_create      //创建线程
    4. pthread_exit      //退出线程
    5. pthread_join      //启动线程
    6. pthread_cancel    //取消线程
    7. pthread_cleanup_push 
    8. pthread_cleanup_pop 
    9. pthread_detach 
    10. pthread_mutex_init 
    11. pthread_mutex_destroy

    总结:这一部分,间短介绍了linux下多进程和多线程的相关概念,并介绍了编程时使用的一些api,多进程编程和多线程编程的实例放在下一部分介绍。

  • 相关阅读:
    Ionic Tabs使用
    Angular 4 延缓加载组件
    JSP include 指令
    JSP 执行流程
    Tomcat 配置
    Spring boot 项目创建(Spring Boot 1.5.7 + Spring Data JPA + MySql)
    Java Web Service 学习笔记
    Tomcat 去除项目名称
    Angular 4 路由守卫
    Angular 4 辅助路由
  • 原文地址:https://www.cnblogs.com/CodingUniversal/p/7392587.html
Copyright © 2011-2022 走看看