11.进程控制理论

进程:进程是一个具有一定独立功能的应用程序的运行。一个没有运行起来的程序不能叫做一个进程,只有运行起来的程序才会产生一个进程。

进程的特点:

  1. 动态性
  2. 并发性
  3. 独立性
  4. 异步性

进程的状态:

当我们运行一个程序的时候,该程序就处于就绪状态。由于程序的运行需要资源,例如内存、硬盘的空间等。所以cpu会发出I/O请求。如果此时正有程序在运行,正在使用这些资源。就会得不到满足,会导致进程进入阻塞状态。当资源请求满足的时候,再次进入就绪状态。等待cpu的调度,在执行的过程中,如果一个进程在系统规定的一个时间片内没能执行完,他会再次进入就绪状态,再次等待cpu调度。如此循环,知道程序运行完。

?

进程ID:

进程的ID(PID):系统给每一个进程的唯一标识,是一个数字。

父进程的ID(PPID)。

启动进程的用户ID(UID)。

?

?

进程的互斥:

进程互斥是指当有若干进程都要使用某一资源时,但该资源在同一时刻最多允许一个进程使

用,这时其他进程必须等待,直到占用该资源者释放了该资源为止。

?

临界资源:

在操作系统中,在某一时刻,只允许一个进程访问的资源叫临界资源。

?

临界区:

进程中访问临界资源的那段程序代码称为临界区。为实现对临界资源的互斥访问,应保证诸进程互斥地进入各自的临界区。

?

进程的同步:

一组进程按一定的顺序执行的过程称为进程间的同步.具有同步关系的这组进程称为合作进程,最为有名的是生产者和消费者进程.

?

进程的调度:

按一定算法,从一组待运行的进程中选出一个来占有cpu运行。

?

常见的调度算法:

  1. 先来先服务
  2. 短进程优先
  3. 高优先级优先
  4. 时间片轮转法

调度的时机:

  1. 抢占式调度
  2. 非抢占式调度

?

?

死锁:

多个进程因竞争资源而形成一种僵局,导致这些进程都无法继续往前执行。

?

下面我们来看获取进程的函数:

获取进程ID的函数是:getpid。

查看该函数的信息:man 2 getpid:

NAME

getpid, getppid - get process identification

?

SYNOPSIS

#include <sys/types.h>

#include <unistd.h>

?

pid_t getpid(void);

pid_t getppid(void);

?

DESCRIPTION

getpid() returns the process ID of the calling process. (This is often

used by routines that generate unique temporary filenames.)

?

getppid() returns the process ID of the parent of the calling process.

?

ERRORS

These functions are always successful.

?

CONFORMING TO

POSIX.1-2001, 4.3BSD, SVr4.

?

NOTES

Since glibc version 2.3.4, the glibc wrapper function for getpid()

caches PIDs, so as to avoid additional system calls when a process

calls getpid() repeatedly. Normally this caching is invisible, but its

correct operation relies on support in the wrapper functions for

fork(2), vfork(2), and clone(2): if an application bypasses the glibc

wrappers for these system calls by using syscall(2), then a call to

getpid() in the child will return the wrong value (to be precise: it

will return the PID of the parent process). See also clone(2) for dis-

cussion of a case where getpid() may return the wrong value even when

invoking clone(2) via the glibc wrapper function.

?

SEE ALSO

clone(2), fork(2), kill(2), exec(3), mkstemp(3), tempnam(3), tmp-

file(3), tmpnam(3), credentials(7)

?

COLOPHON

This page is part of release 3.22 of the Linux man-pages project. A

description of the project, and information about reporting bugs, can

be found at http://www.kernel.org/doc/man-pages/.

获取进程ID的函数getpid。该函数的返回值是调用该函数的进程的ID。需要的头文件:

<sys/types.h> <unistd.h>

该函数没有参数。返回值是调用该函数的进程的ID。

实例getpid.c:

#include <sys/types.h>

#include <unistd.h>

#include <stdio.h>

?

void main(){

????int id = 0;

????id = getpid();

????printf("process‘s ID %d\n",id);

}

?

运行的结果:

上面中,生成的getpid就是一个程序,当我们没有去运行的时候,他就是一个程序。当我们运行起来的时候他就变成了一个进程。进程的ID时时刻刻都在发生变化。

?

?

?

?

?

时间: 2024-09-30 14:30:44

11.进程控制理论的相关文章

进程控制理论,王明学learn

进程控制理论 一.进程 进程是一个具有一定独立功能的程序的一次运行活动. 1.1进程特点 1.动态性:进程的实质是程序的一次执行过程,进程是动态产生,动态消亡的 2.并发性:任何进程都可以同其他进程一起并发执行 3.独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位 4.异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的.不可预知的速度向前推进 结构特征:进程由程序.数据和进程控制块三部分组成. 1.2进程状态图 1.3进程ID 进程ID(PID)

linux应用开发-进程控制理论

linux应用开发-进程控制理论 一 进程 进程是一个具有一定独立功能的程序的一次运行活动. 二 进程特点和状态 动态性 并发性 独立性 异步性 状态 就绪 执行 阻塞 三 调度算法 进程调度:按一定算法,从一组待运行的进程中选出一个来占有CPU运行. 先来先服务 短进程优先调度 高优先级优先调度 时间片轮转法 四 调度方式 在有了等待运行的进程和调度算法后,接下来需要讨论的问题是:什么时候调度? 按调度时机,调度可分为: 抢占式调度 非抢占式调度 五 死锁 多个进程抢占同一个资源而形成的一种僵

Linux进程控制理论及几种常见进程间通信机制

1. Linux进程控制理论 ① 进程是一个具有一定独立功能的程序的一次运行活动(动态性.并发性.独立性.异步性). 进程的四要素: (1)有一段程序供其执行(不一定是一个进程所专有的),就像一场戏必须有自己的剧本.       (2)有自己的专用系统堆栈空间(私有财产)       (3)有进程控制块(task_struct)("有身份证,PID")       (4)有独立的存储空间. 缺少第四条的称为线程,如果完全没有用户空间称为内核线程,共享用户空间的称为用户线程. ② 经典进

python 之路11 进程池,线程池

1.线程 基本使用 创建线程 import threading # def f1(arg): # print(arg) # # t = threading.Thread(target=f1,args=(123,)) # t.start() # class Mythread(threading.Thread): # def __init__(self,func,arg): # self.func = func # self.arg = arg # super(Mythread,self).__in

11 进程及其优先级别

进程:操作系统结构的基础,资源分配的最小单元. 线程:线程存在与进程当中,是操作系统调度执行的最小单位. 一个操作系统中包含多个进程,一个进程又包含多个线程. Android中的process: 当一个Android应用启动,系统会启动一个进程和一个主线程来运行这个应用.Android系统会尽力保持这个进程的稳定和安全.但是,在弄些特殊情况下,总会移除旧的进程来回收内存用于新的或者更重要的进程.当要回收内存的时候,系统要决定哪些应该保留,哪些应该杀掉.因此,在Android进程管理中,设置了进程

1-1 进程理论

一 什么是进程 进程:正在进行的一个过程或者说一个任务.而负责执行任务则是cpu. 二 进程与程序的区别 程序仅仅只是一堆代码而已,而进程指的是程序的运行过程. 举例: 想象一位有一手好厨艺的计算机科学家egon正在为他的女儿元昊烘制生日蛋糕. 他有做生日蛋糕的食谱, 厨房里有所需的原料:面粉.鸡蛋.韭菜,蒜泥等. 在这个比喻中: 做蛋糕的食谱就是程序(即用适当形式描述的算法) 计算机科学家就是处理器(cpu) 而做蛋糕的各种原料就是输入数据. 进程就是厨师阅读食谱.取来各种原料以及烘制蛋糕等一

Linux0.11内核源码——内核态进程切换的改进

由于Linux0.11的内核态进程切换使用的方式是用ljmp来进行TSS的跳转,效率较低,因此考虑对其进行优化,改为后面版本使用的kernel stack栈的切换 需要做的任务 1.重写schedule,switch_to函数 2.将修改过的函数接在一起 3.修改fork函数 目前 Linux 0.11 中工作的 schedule() 函数是首先找到下一个进程的数组位置 next,而这个 next 就是 GDT 中的 n,所以这个 next 是用来找到切换后目标 TSS 段的段描述符的,一旦获得

8.16 进程管理 ftp nfs服务器

挂载U盘 1.检查存储设备名称 fdisk -l  查看自己的设备.用来挂载 2.挂载 sudo mount /dev/sdb1 /mnt dd:拷贝光驱 也可以用来拷贝文件 进程管理 ctrl+z暂停到后台 jobs  可以看到编号 fg     把暂停的运行起来,并且在前台运行 bg    把暂停的运行起来,并且在后台运行 如果一开始就让程序在后台运行 ,需要在后面加上 & KILL  进程id  对进程处理 kill -l  查看kill选项 kill -9    进程id        

linux进程管理与调度

1.什么是进程 借用鸟哥的话说,在linux系统中,触发任何一个事件时,系统都会将其定义为一个进程,并且给予这个进程一个ID,称为PID,同时依据触发这个进程的用户与相关属性关系,给予这个PID一组有效的权限. 程序:通常为二进制程序放置在存储介质中,以物理文件的形式存在. 进程:程序被触发后,执行者的权限与属性.程序的程序代码与所需数据等都被加载到内存在,操作系统给予这个内存中的单元一个标识符.进程是一个正在运行的程序. 2.进程描述符及任务结构 进程存放在叫做任务队列(tasklist)的双