进程控制(二)---进程标识符

  Linux操作系统中为了区分每一个进程,为每个进程分配一个唯一的进程号,也称为进程ID。进程 ID 是保存在进程的 PCB 中,属于进程的内核资源。

  每个进程的进程 ID 虽然是唯一的,但是进程 ID 是可以重用的,当一个进程被终止时,其所有的资源将会被释放,也包括进程 ID。当系统再次创建一个新的进程时,可以为其分配已经被释放的进程 ID 。由于操作系统采用延迟重用算法,所以为刚创建的进程分配的进程 ID通常不会是刚被释放的进程 ID 。

  操作系统中有些进程的进程 ID 是固定的,比如 调度进程的进程 ID 为0,init 进程的进程 ID 为1。这些进程都是特殊的进程。

======================================================================

  前面提到了,进程 ID 保存在进程的 PCB 中,属于进程的内核资源,所以在用户空间中是无法直接获取到进程 ID 的,必须要通过系统调用来获取。下面介绍几个系统调用

函数原型:

返回值:

  • 这个函数不会出错,总会返回进程的进程 ID

函数原型:

返回值:

  • 同样不会出错,总会返回此进程的父进程 ID

函数原型:

返回值:

  • 这两个函数也不会出错,总是返回进程的实际用户 ID 和进程的有效用户 ID

注意:这几个系统调用中的进程 ID 使用了pid_t 类型,用户 ID 使用了 uid_t类型。以后在写程序的时候应该也要使用这种类型来定义变量。

时间: 2024-10-21 05:25:45

进程控制(二)---进程标识符的相关文章

进程控制(二)与linux下的自有服务

一.进程动态信息查看top 第一部分 统计信息 [[email protected] ~]# top top - 19:22:52 up 1:32, 2 users, load average: 0.00, 0.00, 0.00 Tasks: 106 total, 1 running, 105 sleeping, 0 stopped, 0 zombie Cpu(s): 0.1%us, 0.1%sy, 0.0%ni, 99.6%id, 0.0%wa, 0.0%hi, 0.2%si, 0.0%st

进程控制在进程管理中的作用

 进程控制是进程管理中最基本的功能.它用于创建一个新进程,终止一个已完成的进程,或者去终止一个因出现某事件而使其无法运行下去的进程,还可负责进程运行中的状态转换. 一.创建进程 1.引起创建进程的事件 在多道程序环境中,只有(作为)进程(时)才能在系统中运行.因此,为使程序能运行,就必须为它创建进程.导致一个进程去创建另一个进程的典型事件,可以有以下四类: 1) 用户登录 在分时系统中,用户在终端键入登录命令后,如果是合法用户,系统将为该终端建立一个进程,并把它插入到就绪队列中. 2)作业调

(转)进程控制:进程的创建、终止、阻塞、唤醒和切换

进程控制:进程的创建.终止.阻塞.唤醒和切换 进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程.撤销已有进程.实现进程状态转换等功能.在操作系统中,一般把进程控制用的程序段称为原语,原语的特点是执行期间不允许中断,它是一个不可分割的基本单位. 进程的创建 允许一个进程创建另一个进程.此时创建者称为父进程,被创建的进程称为子进程.子进程可以继承父进程所拥有的资源.当子进程被撤销时,应将其从父进程那里获得的资源归还给父进程.此外,在撤销父进程时,也必须同时撤销其所有的子进程.

进程控制(2): 进程操作

进程是系统中基本的执行单位,本节将介绍基本的进程控制原语,包括进程的创建与退出,以及设置除进程标识符(PID)以外的其他标识符. 1 创建进程 Linux系统允许任何一个用户进程创建一个子进程,创建成功后,子进程存在于系统之中,并且独立于父进程.该子进程可以接受系统调度,可以得到分配的系统资源.系统也可以检测到子进程的存在,并且赋予它与父进程同样的权利. Linux系统下使用fork()函数创建一个子进程,其函数原型如下: #include <unistd.h> pid_t fork(void

linux c编程:进程控制(二)_竞争条件

前面介绍了父子进程,如果当多个进程企图对共享数据进行处理.而最后的结果又取决于进程运行的顺序时,就认为发生了竞争关系.通过下面的例子来看下 在这里标准输出被设置为不带缓冲的,于是父子进程每输出一个字符就要进行一次write调用.这样做的目的是尽可能多次地在两个进程之间进行切换,以便演示竞争条件. static void charatatime(char *str){ char *ptr; int c; setbuf(stdout,NULL); for(ptr=str;(c=*ptr++)!='\

进程(二) —— 进程控制块

进程(二) —— 进程控制块 进程控制块(PCB, Process Control Block) 定义: 操作系统管理和控制进程运行所用的信息集合 操作系统用 PCB 来 描述进程的 基本情况 以及 运行变化 的过程 PCB是进程存在的唯一标志 每个进程都在 操作系统 中有一个对应的PCB 进程控制块的使用 进程创建 生成 该进程的 PCB 进程终止 回收它的PCB 进程的组织管理 通过对PCB的组织管理来实现 进程控制块内容 进程标志信息 处理机现场保存 进程控制信息 进程控制信息 调度和状态

进程控制(Note for apue and csapp)

1. Introduction We now turn to the process control provided by the UNIX System. This includes the creation of new processes, program execution, and process termination. We also look at the various IDs that are the property of the process - real, effe

Linux进程控制程序设计

一.进程控制理论基础 进程:是一个具有一定独立功能的程序的一次运行活动.程序是静态的,程序在运行的时候是进程. 1.进程的特点: 动态性:区别于程序的显著特性 并发性:多个进程可以同时执行 独立性:独立的 异步性:进程与进程之间可以进行异步操作 2.进程三态: 进程的ID(PID):标志进程的唯一数字. 父进程ID(PPID) 启动进程的用户ID(UID) 3.进程互斥 进程互斥是指当有若干进程都要使用某一共享资源时,任何时刻最多允许一个进程使用,其他要使用该资源的进程必须等待,直到占用该资源者

小何讲进程: Linux进程控制编程 (fork、vfork)

所谓进程控制,就是系统使用一些具有特定功能的程序段来创建进程.撤消进程以及完成进程在各种状态之间的转换, 从而达到多进程高效率并发执行和协调资源共享的目的.进程控制是进程管理和处理机管理的一个重要任务. 1. fork()创建进程 在Linux系统中,除了系统启动之后的第一个进程(根进程)由系统来创建外, 其余所有进程都必须由已存在的进程来创建新创建的进程叫子进程,而创建子进程的进程叫父进程, 具有相同父进程的进程叫兄弟进程. 在Linux中创建一个新进程的方法是使用fork()函数. fork