当前位置: 首页 > news >正文

衡阳北京网站建设百度手机版下载

衡阳北京网站建设,百度手机版下载,网站注册地查询,网站做优化有用吗基本概念 进程是一个具有单独功能的程序对某个数据集在处理机上的执行过程,进程也是作为资源分配的一个单位。 进程和程序是相辅相成的,进程是一个动态概念。 进程具有并行性特征。进程具有独立性和异步性。 进程的描述 进程分为三部分:…

基本概念

进程是一个具有单独功能的程序对某个数据集在处理机上的执行过程,进程也是作为资源分配的一个单位。

进程和程序是相辅相成的,进程是一个动态概念。

进程具有并行性特征。进程具有独立性和异步性。

进程的描述

进程分为三部分:进程控制块PCB、程序段、数据集

PCB是标识和描述进程存在及其相关特性的数据块,是进程存在的唯一标识。

系统首先创建其PCB然后根据PCB中的信息对进程进行有效的管理和控制。

PCB包括:进程标识、状态信息、进程的优先级、CPU现场信息、资源清单、队列指针等。

每个进程都由一个task_struct数据结构来表示,task_struct叫做进程控制块或者进程描述符。

task_struct

可分为进程标识符信息PID、进程调度信息、进程间通信信息、时间和定时器信息、进程链接信息、文件系统信息、虚拟内存信息、处理器特定信息等。

1.进程标识符信息

每个进程都有唯一的进程标识符,最大的PID号是32767,进程标识符还包括了用户标识符uid、有效用户标识符euid、组标识符gid、有效组标识符egid等

2.进程调度信息

主要包括调度标志、调度的策略、进程的类别、进程的优先级、进程的状态

状态一般有可运行、可中断等待、不可中断等待、暂停、僵尸等

3.进程链接信息

存储了用于链入进程双向链表的前后指针,指向祖先进程、父进程、子进程、兄弟的指针

4.时间和定时器

内核需要记录进程的创建时间以及在其生命周期中消耗的CPU时间。

5.文件系统信息

进程会经常访问文件系统资源,打开或关闭文件,Linux内核要对进程使用文件的情况进行记录。

6.虚拟内存信息

Linux采用按需分页的策略来解决进程的内存需求,当物理内存不足时,Linux内存管理系统需要把内存中的部分页面交换到外存。

7.处理器特定信息

所有与CPU相关的处理机状态都储存在这。

Linux支持两种进程:普通进程和实时进程。

进程的标识符

用于唯一标识某个进程,在程序运行时,PID不会改变,程序终止之后PID就会被系统回收,以后分配给新的进程。类型pid_t,实际上就是int。

我们可以使用

pid_t getpid(void);

来查看进程的pid

PID文件

PID文件为文本文件,内容只有一行,记录了该进程的id。

用于防止进程启动多个副本。只有获得相应PID文件写入权限的进程才能正常启动,并把自身PID写入该文件中。

通常有两种方法配合PID文件来实现进程的重复启动:文件加锁法、PID读写法。

文件加锁法:进程运行后会给pid文件加一个文件锁,只有获得该锁的进程才有写入权限,其他试图获得该锁的进程会自动退出。加锁函数 fcntl。

PID读写法:先启动的进程往PID中写入自己的进程ID号,然后其他进程判断该PID文件中是否有数据。

tinclude <stdlib.h>
tinclude <stdio.h>
finclude <sys/types.h>
tinclude <sys/stat.h>
tinclude <fcntl.h>
tinclude <unistd.h>
tinclude <string.h>
include <signal.h>static char*starter pid file default ="/var/run/test.pid";static bool check pid(char *pid file)
{struct stat stb;FILE *pidfile;if (stat(pid file,6stb)==0){pidfile = fopen(pid file,"r");if (pidfile){char buf[64];pid_t pid =0;memset(buf,0,sizeof(buf));if (fread(buf,1,sizeof(buf),pidfile)){buf[sizeof (buf)-1]\0';pid = atoi (buf);}fclose(pidfile);if(pid&&kill(pid,0)==0)/检查进程{	/* such a process is running */return 1;}}printf ("removing pidfile '&s',process not running",pid file);unlink (pid file);}return 0;
}
int main()
{FILE *fd = fopen(starter pid file default,"w");if (fd){fprintf (fd,"%u\n",getpid());fclose(fd);}if (check_pid(starter_pid_file_default)){printf("test is already running (%s exists)",starter_pid_file_default);}elseprintf("test is NOT running(%s NOT exists)",starter_pid_file_defult);unlink(starter_pid_file_default);return 0;
}

进程的创建

使用fork创建进程

由fork创建的进程称为子进程,和父进程的属性基本是等同的。但是他们并不共享内存,而是采用写时复制的技术。

#inlcude<unistd.h>
pid_t fork();

使用exec创建进程

#include <unistd.h>
int execl(const char *path,const char *arg,...);
int execlp(const char *file,const char *arg,...);
int execle(const char *path,const char *arg,···,char const envp[]);
int execv(const char *path,char *const argv[]);
int execvpe (const char *file,char *const argv[],char *const envp[]);

进程调度

进程调度就是处理机调度。

任务就是控制和协调进程对CPU的竞争,按照一定的算法是某一就绪程序取得CPU的控制权,转为运行状态。

常用算法有:先来先服务算法,时间片轮转法,优先级算法,多级反馈算法

进程状态转换

进程的分类

前台进程

普通进程

可以通过

ps -e|grep 进程名

来查看

后台进程

在启动时加一个'&'。一般称为job。

守护进程

是运行在后台的特殊进程。独立于终端并周期性的执行某种任务或等待处理某些发生的事件。

它的父进程是init进程,因为它产生以后它的父进程就退出由init继承。

特点

具有超级用户的权限。

守护进程的父进程是init进程。

不用控制终端,tty以'?'表示。

是自己进程组合会话过程的唯一进程。

查看守护进程

ps x或ps axj

http://www.dinnco.com/news/25823.html

相关文章:

  • 外贸公司怎么运作佛山抖音seo
  • 企业网站公示怎么做免费做网站的网站
  • 微信如何建公众号怎么创建seo优化教程自学网
  • javascript做网站重要吗怎么做平台推广
  • wordpress菜单设置图标网络seo
  • 丹江口网站制作淘宝运营培训班学费大概多少
  • 天津网站怎么做seo申请域名
  • 上海网站建设 网页做百度一下子就知道了
  • 鹰潭网站开发发布友情链接
  • 自己做网站卖东西需要交税吗搜索引擎最佳化
  • 如何做视频解析网站汕头网站建设推广
  • 湛江网站制作计划百度关键词排名技术
  • 学做蛋糕哪个网站好广告投放平台
  • 怎样建设学校网站首页下载百度地图2022最新版
  • 政府网站建设的基本原则seoul是哪个城市
  • 网站建设买什么书明星百度指数排行
  • 做钓鱼网站犯法吗软件开发
  • 做微网站公司简介大连seo外包平台
  • 网络代理项目北京seo网站开发
  • 新乡专业做淘宝网站浏览器下载大全
  • 已经有备案的公司网站 还能不能加网站网站推广的方式有哪些
  • 东莞外贸企业名单唐山seo排名外包
  • 一般网站开发语言小程序开发
  • wordpress婚庆主题公园seo优化必备技巧
  • 长沙市网站推广多少钱百度首页关键词优化
  • 自助网站建设平台游戏优化大师手机版
  • 做网站要学习什么湖北网络推广seo
  • 固安县住房和城乡建设局网站深圳营销型网站开发
  • 政府门户网站集约化建设会今日最新足球推荐
  • 太原网站建设方案书长尾关键词