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

.net 网站开发权限设计东莞网站排名优化seo

.net 网站开发权限设计,东莞网站排名优化seo,宁波seo网络推广选哪家,抖音代运营一、进程的概述 可执行程序运行起来后#xff08;没有结束之前)#xff0c;它就成为了一个进程。程序是存放在存储介质上的一个可执行文件#xff0c;而进程是程序执行的过程。进程的状态是变化的#xff0c;其包括进程的创建、调度和消亡。程序是静态的#xff0c;进程是…一、进程的概述 可执行程序运行起来后没有结束之前)它就成为了一个进程。程序是存放在存储介质上的一个可执行文件而进程是程序执行的过程。进程的状态是变化的其包括进程的创建、调度和消亡。程序是静态的进程是动态的。 1、程序和进程的区别 程序 静态的 占磁盘空间存放在存储介质上的一个可执行文件         进程 动态的 调度、执行、消亡占内存空间。进程是程序执行到结束间的这个过 程 2、单道和多道程序设计 单道程序设计 所有进程一个一个排队执行。若A阻塞B只能等待即使CPU处于空闲状 态。这种模型在系统资源利用上及其不合理大部分已被淘汰了。 多道程序设计 在计算机内存中同时存放几道相互独立的程序它们在管理程序控制之 下相互穿插的运行。当下常见CPU为纳秒级由于人眼的反应速度是毫秒级所以看似同时在运行。 而多道程序设计必须有硬件基础作为保证。时钟中断强制让进程让出cpu资源即为多道程序设计模型的理论基础。 3、并行和并发的区别 并行微观和并发宏观都是多个任务同时执行多道程序。 并行(parallel)指在同一时刻有多条指令在多个处理器上同时执行微观上同时执行多核         并发(concurrency)指在同一时刻只能有一条指令执行但多个进程指令被快速的轮换执 行使得在宏观上具有多个进程同时执行的效果但在微观上并不是同时执行的只是把时 间分成若干段使多个进程快速交替的执行单核 4、进程控制块PCB 进程运行时内核为每个进程分配一个PCB进程控制块维护进程相关的信 息Linux内核的进程控制块是task_struct结构体。 PCB存在于进程的内核空间里面。系统会为每一个进程分配一个进程ID其类型为pid_t(非负整数) 进程的状态有就绪、运行、挂起、停止等状态。进程状态切换时需要保存和恢复的一些CPU寄存器。进程是系统分配资源的基本单位。 5、进程的状态 进程的三大状态就绪态、执行态、等待态 就绪态执行条件全部满足等待CPU的执行调度执行(运行)态正在被CPU调度执行等待态不具备CPU调度执行的执行条件等待条件满足。  ps命令查看进程信息:  选项含义-a显示终端上的所有进程包括其他用户的进 程-u显示进程的详细状态-x显示没有控制终端的进程-w显示加宽以便显示更多的信息-r只显示正在运行的进程 查看进程状态ps -aux  stat中的参数意义如下: 以树状显示进程pstree 二、进程号PID 每个进程都由一个进程号来标识其类型为 pid_t整型进程号的范围032767。 进程号总是唯一的但进程号可以重用。当一个进程终止后其进程号就可以再次使用 。 进程号PID 标识进程的一个非负整型数父进程号PPID:父进程号进程组号PGID 进程组是一个或多个进程的集合。  1、获取进程号的函数  头文件 #includesys/type.h #includeunistd.h 函数 pid_t getpid(void);   功能 获取本进程号PID 参数 无 返回值 本进程号  2、获取父进程的ID #includesys/type.h #includeunistd.h pid_t getppid(void); 功能 获取调用此函数的进程的父进程号PPID 参数 无 返回值 调用此函数的进程的父进程号PPID 3、获取进程组的ID #includesys/type.h #includeunistd.h pid_t getpgid(pid_t pid); 功能 获取进程组号PGID 参数 pid进程号 返回值 参数为 0 时返回当前进程组号否则返回参数指定的进程的进程组号   查看父子进程号ps -ef  查看所有进程号ps -ajx getchar();防止进程结束。  三、 fork创建进程 1、fork函数 系统允许一个进程创建新进程新进程即为子进程子进程还可以创建新的子进程形成进 程树结构模型。 #includesys/types.h #includeunistd.h pid_t fork(void); 功能 用于从一个已存在的进程中创建一个新进程新进程称为子进程原进程称为父进程。 参数 无 返回值 成功子进程中返回 0父进程中返回子进程 ID。pid_t为整型。 失败返回-1。 失败的两个主要原因 1当前的进程数已经达到了系统规定的上限这时 errno 的值被设置为 EAGAIN。 2系统内存不足这时 errno 的值被设置为 ENOMEM  2、fork出来的子进程和父进程之间的关系  使用fork函数得到的子进程是父进程的一个复制品它从父进程处继承了整个进程的地址空间。 地址空间: 包括进程上下文、进程堆栈、打开的文件描述符、信号控制设定、进程优 先级、进程组号等。 子进程所独有的只有它的进程号计时器等。因此使用fork函数的代价是很大的 。 父子进程 从fork后开始继续执行。父子进程是同时运行空间独立子进程复制父进程的所有空间谁先运行不确定。  #include stdio.h #include unistd.h int main(int argc,char *argv[]) {//创建子进程pid_t pidfork();if(pid0){perror(创建失败\n);}else if(pid0){printf(%d为子进程\n,getpid());}else if(pid0){printf(%d为父进程\n,getpid());}getchar();return 0; } 3、子进程 复制 父进程的资源各自独立 4、父子进程同时运行 5、父进程 给子进程 足够的准备时间时  四、特殊的进程 孤儿进程、僵尸进程、守护进程。  1、孤儿进程无危害 父进程先结束、子进程就是孤儿进程会被1号进程接管1号进程负责给子进程回收资 源 终止子进程  2、僵尸进程有害 子进程结束父进程没有回收子进程资源PCB,子进程就是僵尸进程。  当父进程结束后僵尸进程的资源被回收。  3、守护进程 守护进程 是脱离终端的 孤儿进程。在后台运行。为特殊服务存在的。一般用于服务器 五、父进程回收子进程的资源 在每个进程退出的时候内核释放该进程所有的资源、包括打开的文件、占用的内存等。但 是仍然为其保留一定的信息这些信息主要主要指进程控制块PCB的信息包括进程号、退 出状态、运行时间等 父进程可以通过调用wait或waitpid得到它的退出状态同时彻底清除掉这个进程。 wait()和 waitpid()函数的功能一样区别在于wait()函数会阻塞waitpid()可以设置不阻塞。注意一次wait或waitpid调用只能清理一个子进程清理多个子进程应使用循环。 wait、waitpid基本上都是在父进程调用。 1、wait函数 #includesys/types.h #includesys/wait.h pid_t wait(int *status);   功能 等待任意一个子进程结束如果任意一个子进程结束了此函数会回收该子进程的资源。         参数 status : 进程退出时的状态信息。         返回值 成功已经结束子进程的进程号 失败 -1         注意 调用wait的进程会阻塞(挂起)、直到该函数返回才被唤醒。若调用进程没有子进程该函数立即返回 子进程已经结束该函数同样会立即返回并且会回收那个早已结束进程的资源。如果参数status 的值不是NULLwait()就会把子进程退出时的状态取出并存入其中。这是一个整数值 int指出了子进程是正常退出还是被非正常结束的。         状态值 int中包含了多个字段直接使用这个值是没有意义的WIFEXITED(status) 如果子进程是正常终止的取出的字段值非零。 WEXITSTATUS(status) 返回子进程的退出状态退出状态保存在status变 量的8~16位在用此宏前应先用宏WIFEXITED判断子进程是否正常退出正常退出才可以使用此宏。 2、waitpid函数 wiatpid常用于等待多个子进程结束。 #includesys/type.h #includesys/wait.h pid_t waitpid(pid_t pid, int *status, int options);   功能: 等待子进程终止如果子进程终止了此函数会回收子进程的资源。 参数 pid : 参数 pid 的值有以下几种类型 pid 0 等待进程 ID 等于 pid 的子进程。pid 0 等待同一个进程组中的任何子进程如果子进程已经加入了别的进程组 waitpid 不会等待它。pid -1 等待任一子进程此时 waitpid 和 wait 作用一样。pid -1 等待指定进程组中的任何子进程这个进程组的 ID 等于 pid 的绝对值。 status : 进程退出时的状态信息。和 wait() 用法一样。 options : options 提供了一些额外的选项来控制 waitpid()。 0同 wait()阻塞父进程等待子进程退出。WNOHANG没有任何已经结束的子进程则立即返回。WUNTRACED如果子进程暂停了则此函数马上返回并且不予以理会子进程的结束状态。由于涉及到一些跟踪调试方面的知识极少用到 返回值 waitpid() 的返回值比 wait() 稍微复杂一些一共有 3 种情况 当正常返回的时候waitpid() 返回收集到的已经回收子进程的进程号如果设置了选项 WNOHANG而调用中 waitpid() 还有子进程在运行,且没有子进程退出返回0 父进程的所有子进程都已经退出了 返回-1 返回0表示等到一个子进 程退出如果调用中出错则返回-1这时 errno 会被设置成相应的值以指示错误所在 如当 pid 所对应的子进程不存在或此进程存在但不是调用进程的子进程waitpid() 就会出错返回这时 errno 被设置为 ECHILD waitpid等价于wait的案例 六、创建多个子进程 1、创建2个子进程出现的问题 2、防止子进程 创建孙进程  #include stdio.h #include unistd.h #include sys/wait.h #define N 3 int main(int argc,char *argv[]) {//创建3个子进程int i0;for(;iN;i){pid_t pidfork();if(pid0)//防止子进程创建孙进程{break;}}//判断具体的子进程if(i0)//子进程1{//完成任务Aint i3;for (; i 0; i--){printf(子进程%d工作剩余时间%d\n,getpid(),i);sleep(1);}_exit(-1);}else if(i1)//子进程2{//完成任务Bint i5;for (; i 0; i--){printf(子进程%d工作剩余时间%d\n,getpid(),i);sleep(1);}_exit(-1);}else if(i2)//子进程3{//完成任务Cint i7;for (; i 0; i--){printf(子进程%d工作剩余时间%d\n,getpid(),i);sleep(1);}_exit(-1);}else if(iN)//父进程{//回收子进程资源while(1){pid_t pidwaitpid(-1,NULL,WNOHANG);//不阻塞if(pid0){printf(子进程%d退出\n,pid);}else if(pid0)//还有子进程在运行{continue;}else if(pid-1){printf(所有子进程已结束\n);break;}}}return 0; } 七、 进程相关 1、终端  用户通过终端登录系统后得到一个Shell进程这个终端成为Shell进程的控制终端Controlling Terminal进程中控制终端是保存在PCB中的信息而 fork会复制PCB中的信息因此由Shell进程启动的其它进程的控制终端也是这个终端。 2、进程组  一个或多个进程的集合也称之为作业。当父进程创建子进程的时候默认子进程与父进程属于同一进程组。当bash创建进程时该进程自己创建与自己ID相同的进程组不与父进程同属于一个进程组。 进程组ID为第一个进程ID(组长进程) 进程ID和进程组ID相同的进程就是 组长进程。 可以使用kill -SIGKILL -进程组ID(负的)(正的为组长进程)来将整个进程组内的进程全部杀死 只要进程组中有一个进程存在进程组就存在与组长进程是否终止无关。 进程组生存期进程组创建到最后一个进程离开(终止或转移到另一个进程组)。 #includeunistd.h pid_t getpgrp(void);  功能获取当前进程的进程组ID 参数无 返回值总是返回调用者的进程组ID pid_t getpgid(pid_t pid); 功能获取指定进程的进程组ID 参数 pid进程号如果pid 0那么该函数作用和getpgrp一样 返回值 成功进程组ID         失败-1 int setpgid(pid_t pid, pid_t pgid) 功能 改变进程默认所属的进程组。通常可用来加入一个现有的进程组或创建一个新进程组。 参数 将参1对应的进程加入参2对应的进程组中 返回值 成功0 失败-1 3、会话 会话是一个或多个进程组的集合。 一个会话可以有一个控制终端。 一个会话中的几个进程组可被分为一个前台进程组以及一个或多个后台进程组;如果一个会话有一个控制终端则它有一个前台进程组其它进程组为后台进程组;如果终端接口检测到断开连接则将挂断信号发送至控制进程会话首进程。 如果进程ID进程组ID会话ID 那么该进程为会话首进程。 创建新会话的步骤 调用进程不能是进程组组长该进程变成新会话首进程(session header)该调用进程是组长进程则出错返回 。该进程成为一个新进程组的组长进程需有root权限(ubuntu不需要)新会话丢弃原有的控制终端该会话没有控制终端建立新会话时先调用fork, 父进程终止子进程调用setsid  #includunistd.h pid_t getsid(pid_t pid); 功能获取进程所属的会话ID 参数 pid进程号pid为0表示查看当前进程session ID 返回值 成功返回调用进程的会话ID 失败-1 #includeunistd.h pid_t setsid(void); 功能 创建一个会话并以自己的ID设置进程组ID同时也是新会话的ID。调用了setsid函数的进程既是新 的会长也是新的组长。 参数无 返回值 成功返回调用进程的会话ID 失败-1   4、创建守护进程 创建子进程父进程退出(必须) 所有工作在子进程中进行形式上脱离了控制终端在子进程中创建新会话(必须) setsid()函数 使子进程完全独立出来脱离控制。改变当前目录为根目录(不是必须) chdir()函数 防止占用可卸载的文件系统 也可以换成其它路径 重设文件权限掩码(不是必须) umask()函数 防止继承的文件创建屏蔽字拒绝某些权限增 加守护进程灵活性。关闭文件描述符(不是必须) 继承的打开文件不会用到浪费系统资源无法卸载开始执行守护进程核心工作(必须) 守护进程退出处理程序模型  八、 vfork创建子进程 1、vfork函数说明  vfork函数创建一个新进程 pid_t vfork(void) 功能 vfork函数和fork函数一样都是在已有的进程中创建一个新的进程但它们创建的子进程是有区别的。 返回值: 创建子进程成功则在子进程中返回0,父进程中返回子进程ID。出错则返回-1。  2、vfork函数和fork函数的区别  区别1vfork创建的子进程 会保证子进程先运行只有当子进程退出调用 exec的时候父进程才运行。 区别2vfork创建的子进程 和父进程 共用一个空间。 九、exec函数族 exec函数族功能在进程中 启动另一个进程。  #includeunistd.h int execl(const char *path, const char *arg, .../* (char *) NULL */);int execlp(const char *file,cconst char *arg, ... /* (char *) NULL */);int execle(const char *path, const char *arg, .../*, (char *) NULL, char * const envp[] */);int execv(const char *path, char *const argv[]);int execvp(const char *file, char *const argv[]);int execvpe(const char *file, char *const argv[], char *const envp[]);int execve(const char *filename, char *const argv[], char *const envp[]);   函数中有l(list)表明使用列表方式传参函数中有v(vector)表明使用指针数组传参。 函数中有ppath表明 到系统环境中 找可执行性文件 函数中有e(evn) 表明exec可以使用环境变量值 案例1在代码中使用execl执行ls命令 查看ls命令的路径  一个进程调用exec后不会返回exec函数族取代调用进程的数据段、代码段和堆栈段。除了进程ID进程还保留了下列特征不变 父进程号 进 程组号 控制终端 根目录 当前工作目录 进程信号屏蔽集 未处理信号 ...  案例2在代码中使用execlp执行ls命令  案例3在代码中使用execvp执行ls命令  案例4vfork和exec配合使用,会为子进程开辟新的空间
http://www.dnsts.com.cn/news/127052.html

相关文章:

  • 怎么用电脑做网站虚拟空间高端的咨询行业网站设计
  • 河源建设工程交易中心网站欧美做瞹瞹嗳免费视频网站
  • 做网站是否要去工商备案公司建设网站费用如何入帐
  • 东莞微客巴巴做网站开源php网站开发
  • 网站系统灵活性wordpress电影网站模板
  • 国企网站建设标准wordpress 安卓
  • 网站建设及管理基本要求永州网页定制
  • 网站建设工作具体内容北京做机柜空调的网站
  • 聊城哪里网站做的好营销手机系统安装
  • 公司网站建设管理制度什么是网站维护费
  • 如何查到网站是谁做的小游戏免费入口
  • 张家港网站哪家做的好移动端h5页面开发流程
  • 东莞模板网站设计建设厅企业锁在哪个网站登录
  • 青海报社网站建设公司免费法律咨询
  • 不属于c2c网站的是网站logo设计制作
  • 关于手机的网站有哪些内容吗如何做网站本地服务器
  • 电子商务网站建设与管理考试例题个体工商网上年检
  • 做电商有哪些网站有哪些内容南京十大广告公司
  • 建设大型网站的公司Wordpress生成密码加密方式
  • 网站业务怎么做的地方门户类网站
  • 晋江市住房建设局网站浙江人工智能建站系统软件
  • 网站建设的建议网页设计与网站建设试卷
  • 公司网站是否有必要销售产品网站建设的目的是什么
  • 备案怎么关闭网站浙江温州网络公司
  • p2p理财网站开发要求数据线 东莞网站建设
  • 企业网站的价值体现是在临夏金属装饰网站建设
  • 网站建设及规划方案制作公司网站有哪些好处
  • 凡科怎么建站教程亚马逊图书网上商城
  • 建立网站如何规划和实施建设网站开发技术指标与参数
  • 腾讯 网站建设房产管理局官网入口