• Linux 进程操作_12


    进程是应用程序在内存中的基本执行单元,同时系统资源分配的基本单位。
     Linux 下几乎所有的用户管理,资源分配等操作都是通过相应进程的控制来实现的。
     知识大纲 『
      *1 进程的概念,包括进程的组成,进程的状态等。
      *2 Linux进程, 包括进程的状态,调度信息,标识符,进程间通信相关信息的获取等。
      *3 进程的创建与控制,包括进程创建函数,进程终止,获取进程信息,守护进程等。
     』
    12.1 进程的概念
       进程(Process)是指操作系统中被加载到内存中的,正在运行的应用程序实例。
            它最初是随着批处理系统和分时系统的出现而引入的。
         用户 : 进程是应用程序的一次执行过程。
         OS内核 : 进程代表着OS分配的内存,CPU时间片等资源的基本单位,是为程序提供的运行环境。
        Linux中,各个进程运行在其各自的地址空间中,具有独立的权限与职责,如果系统中某个进程崩溃,不会影响到其余的进程。进程之间只有通过通讯机制才能发生联系。
     -12.1.1 进程的组成
      进程主要由程序,数据,以及进程控制块 (PCB) 3个部分组成。
      1), 程序
        程序是描述进程功能的可执行机器指令,它通常作为一个静态文件存储在计算机系统的硬盘等存储设备之中。
      2), 数据
        数据是进程的操作对象,同一段程序在不同数据集上的执行过程是不同的进程。
      3), 进程控制块
        PCB 是 OS 中用来描述和控制进程的一种数据结构,它是进程存在的唯一标志。
        PCB 主要包括 『
         PID, PPID, 启动进程的UID, GID, 进程当前的状态,进程的优先级以及进程的资源占用情况等。
     -12.1.2 进程状态的转化
       在多任务OS中,进程在 CPU 上交替运行,状态不断改变。
        三大基本状态 『
           *1 运行态  *2 就绪态  *3 阻塞态
        』
     实际的操作系统中,除了上面的3大基本状态之外,还包括,新建态,终止态。
      4* 新建态 :进程被创建但尚未被提交的状态。
          进程创建分2个阶段 : 第一阶段为新进程创建必要的管理信息,第二阶段使该进程进入就绪态。
              由于存在新建态,OS可能会根据系统的负载和内存的容量等情况推迟新建态进程的提交。
       随着新进程不断地被创建,系统资源渐渐地不能满足所有进程运行的要求,尤其是内存资源。这时就需要将某些进程挂起,即将其换出内存,存放到磁盘交换分区中。这种状态进程之间的转换关系就如右图 (略)。
     *1 活跃就绪态
     *2 挂起就绪态
     *3 活跃阻塞态
     *4 挂起阻塞态
     *5 运行
       被挂起的进程不参加 CPU 调度,通过这种方式可以平衡系统的负载。
    -12.2 Linux 进程
      Linux系统中,每个进程由一个 task_struct 数据结构来描述,即前面提到的进程控制块PCB。
       #include <linux/sched.h> task_struct 包含了进程管理和控制的所有信息。
      struct task_struct {
      	volatile long state;    // 进程的状态
      	struct thread_info *thread_info;
      	atomic_t usage; 
    	unsigned long flags;
      	int lock_depth;
      	.....
     }
     -12.2.1 进程的状态
      *1), 运行状态  *2), 等待状态(正在等待某个事件或资源)  *3), 暂停状态  *4), 僵死状态。 (终止了,但还保留task_struct)
     -12.2.2 进程调度信息
     -12.2.3 进程的标识符
     -12.2.4 进程间通信相关信息
     -12.2.5 进程链接信息
     -12.2.6 时间和定时器信息
     -12.2.7 文件系统信息
     -12.2.8 其他信息
    -12.3 进程的创建与控制
      Linux系统下用于新进程创建的函数主要有4个 : fork 函数, vfork函数, system函数, popen函数。
       进程终止有多种方式, 主要介绍 : exit函数和_exit函数。
     -12.3.1 fork 函数
     -12.3.2 vfork函数 和 exec 函数
     -12.3.3 system 函数
     -12.3.4 popen 函数
     -12.3.5 进程终止
     -12.3.6 获取进程信息
    -12.4 守护进程
     -12.4.1 守护进程的创建方法
        (1),将子进程放入后台运行
        (2),在子进程中创建新会话
        (3), 关闭打开的文件描述符
        (4), 改变工作目录
        (5), 重设文件权限掩码
        (6), 处理 SIGCHLD 信号
     -12.4.2 守护进程的输出
    -12.5 常见面试题
      (1), Linux系统中进程主要有几种状态?
      (2), 在Linux系统中如何创建守护进程?
    -12.6 小结
      Linux 是一个多用户,多任务的操作系统,进程管理是其内核中的一个重要的组成部分。
       进程是程序在计算机系统上的一次执行活动,它不仅是系统内存独立运行的实体,还是资源竞争和分配的基本单位。理解进程的概念,掌握进程的创建,等待,终止等方法是本章及后续章节学习的基础,尤其是 fork, exec, system, wait 等函数。
     守护进程(Daemon)是运行在后台的一种特殊进程,它通常伴随着Linux系统始终运行。因此如果要把自己的进程改造成为守护进程,务必要小心操作,同时还要深刻理解进程之间的相互关系。

  • 相关阅读:
    Docker_使用Rancher管理docker(7)
    Docker_部署本地镜像仓库(6)
    Python_多任务:进程、线程、协程
    JMeter_实现算法加密
    Docker_创建自定义镜像(5)
    Fiddler Everywhere简单使用
    Docker_容器(container)使用(4)
    Docker_镜像(image)使用(3)
    C#读写锁ReaderWriterLockSlim的使用
    C++二级指针第三种内存模型
  • 原文地址:https://www.cnblogs.com/robbychan/p/3786965.html
Copyright © 2020-2023  润新知