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

天津做网站报价重庆网络货运平台

天津做网站报价,重庆网络货运平台,成都网站服务,excel连接网站 做数据分析以下内容源于网络资源的学习与整理#xff0c;如有侵权请告知删除。 一、进程的概述 进程#xff0c;是指一个具有独立功能的程序关于某个数据集合的一次可以并发执行的运行活动#xff0c;是处于活跃状态的计算机程序#xff0c;是系统进行资源分配和调度的基本单位。进程…以下内容源于网络资源的学习与整理如有侵权请告知删除。 一、进程的概述 进程是指一个具有独立功能的程序关于某个数据集合的一次可以并发执行的运行活动是处于活跃状态的计算机程序是系统进行资源分配和调度的基本单位。进程是一个程序的一次运行过程同时也是资源分配的最小单位。程序是静态的是一些保存在硬盘上的命令的有序集合。进程是动态的是程序执行的过程。包括创建、调度和消亡的整个过程。 二、程序的开始与结束 1、main函数由谁调用 1编译链接时的引导代码 操作系统下的应用程序在main函数执行前需要先执行一段引导代码为了构建C语言环境等目的。我们编写代码时不用考虑引导代码因为它是编译器自带的。链接时链接器将编译器中自带的引导代码与应用程序一起构成最终的可执行程序。 2运行时的加载器 加载器是操作系统中的一个程序当执行一个程序时比如./a.out或者用exec族函数来运行某个程序加载器负责将程序加载到内存中。 2、程序如何结束 1正常终止return、exit、_exit。 2非正常终止自己或他人发信号比如ctrl c 终止正在运行的程序终止进程。 3、atexit()函数注册进程终止处理函数 所需的头文件         #include stdlib.h函数原型int atexit(void (*function)(void));返回值成功则返回0失败则返回非零值。 1所谓进程终止处理函数即进程终止前所要做的处理。 2使用atexit()函数注册多个进程终止处理函数先注册的后执行。 3return、exit终止进程时会执行进程终止处理函数_exit不会执行。 4代码示例 #include stdio.h #include stdlib.h #include unistd.hvoid func1(void) {printf(func1\n); }void func2(void) {printf(func2\n); }int main(void) {printf(hello world.\n);// 当进程被正常终止时系统会自动调用这里注册的func1执行atexit(func2);atexit(func1);printf(my name is lilei hanmeimei\n);//return 0;//exit(0);_exit(0); } 三、进程的诞生与消亡 1、进程的诞生 1进程1从何而来 进程0是操作系统在启动过程中由内核一点点构建起来。内核态下的进程1是由进程0利用内核内部的“fork”创建出来然后才转变为用户态下的进程1。 2其他进程从何而来 其他进程都是由进程1直接或者间接使用fork()函数或者vfork()函数创建出来的。 2、进程的终止 1终止的方式 正常终止和异常终止。 2终止时资源回收问题 进程在运行时需要占用系统资源比如内存和IO。进程终止时操作系统会自动回收该进程涉及到的所有资源。比如malloc申请的内存没有free、open打开的文件没有close时进程终止时将会释放内存与关闭文件。 操作系统只回收该进程工作时所占用的内存和IO没有回收该进程本身占用的内存8KB主要是task_struct和栈内存。这部分的内存需要该进程的父进程来回收。 3僵尸进程 如果子进程已经结束父进程尚未回收子进程本身所占用的内存则称子进程为僵尸进程。 父进程可以使用wait()函数显式地回收僵尸进程的内存资源并且获取子进程退出状态或者父进程结束时也会回收僵尸进程的内存资源。这样设计可以防止父进程忘记显式调用wait()函数来回收子进程从而造成内存泄漏。 4孤儿进程 如果父进程先于子进程结束则子进程成为一个孤儿进程。 inux系统规定所有的孤儿进程都自动成为进程1即init进程的子进程。 四、进程状态与转换 1、进程的5种状态 1就绪态这个进程当前所有运行条件就绪只要得到CPU时间就能直接运行。 2运行态就绪态时得到了CPU就进入运行态开始运行。 3僵尸态进程已经结束但是父进程还没来得及回收。 4等待态进程在等待某种条件条件成熟后可进入就绪态。 5暂停态暂停并不是进程的终止只是被信号暂停了可以恢复。 2、各种状态之间的转换 五、进程环境 1、环境变量 1环境变量的含义 环境变量是指进程运行的环境中的变量。当前进程的环境变量与系统环境变量可以使用export命令查看系统环境变量。 rootubuntu:/home/xjh/iot/tmp# export declare -x CLUTTER_IM_MODULExim declare -x COLORTERMgnome-terminal declare -x COMPIZ_CONFIG_PROFILEubuntu declare -x DBUS_SESSION_BUS_ADDRESSunix:abstract/tmp/dbus-Gjr7Cf2p8H declare -x DEFAULTS_PATH/usr/share/gconf/ubuntu.default.path declare -x DESKTOP_SESSIONubuntu declare -x DISPLAY:0 declare -x GDMSESSIONubuntu declare -x GDM_LANGen declare -x GNOME_DESKTOP_SESSION_IDthis-is-deprecated declare -x GNOME_KEYRING_CONTROL/run/user/1000/keyring-qpyvSE declare -x GNOME_KEYRING_PID2007 //省略 2进程环境表 每个进程中都有一份所有环境变量构成的表格此表格叫做进程环境表。它是一个字符串数组当前进程可以直接使用这些环境变量。 我们在编程时可以无条件地直接使用系统中的环境变量。一旦程序中用到环境变量则程序就与具体操作系统的环境有关了。比如在编程中使用environ这个全局变量 #include stdio.h int main(void) {extern char **environ; // 声明就能用不用定义int i 0;while (NULL ! environ[i]){printf(%s\n, environ[i]);i;}return 0;} 3getenv()函数、setenv函数 getenv()函数用来获取指定环境变量函数getenv。 setenv函数用来设置环境变量。注意只能设置或删除当前进程的环境变量而不是操作系统的环境变量。 所需头文件 #include stdlib.h 函数原型  char *getenv(const char *name);返回值成功则返回指向环境变量的指针。所需头文件 #include stdlib.h函数原型int setenv(const char *name, const char *value, int overwrite);返回值成功则返回0失败返回-1。2、进程运行的虚拟地址空间 1虚拟地址空间的概念 操作系统中每个进程之间是彼此独立的都在独立的地址空间中运行。对于32位系统操作系统为每个进程分配了4GB的虚拟地址空间一般0~1G为OS1~4G为应用。每个进程所占的物理内存其实并不多所以我们可以给每个进程分配一段物理内存空间。这其中涉及到虚拟地址到物理地址的映射问题。 2虚拟地址空间的意义 进程隔离提供多进程同时运行。
http://www.zqtcl.cn/news/354319/

相关文章:

  • 郑州网站建设 郑州网站制作wordpress删除模板
  • 北京网站设计培训wordpress vps 伪静态
  • 做网站和编程有关系吗seo百家外链网站
  • 网站新闻怎么写最新事故案例100例
  • 网站中的表格seo宣传网站
  • 河南锦路路桥建设有限公司网站网站建设会考什么
  • 高校网站建设研究意义餐饮vi设计案例
  • 触屏手机网站网站建设功能模块价格
  • 类似携程网的网站wordpress文章摘要调用
  • 好网站建设公司开发方案联盟营销的网络营销方式
  • logo免费生成网站洛阳网络建站公司
  • 建设工程部网站百度指数功能
  • 个人网站 商业时事新闻2022最新10月
  • 不会代码 怎么做网站网站视频管理系统
  • 网站空间 流量网上卡片制作
  • 网站排名seo软件机关网站源码
  • 网站手机端页面怎么做手机之家
  • 成都电子商务网站大庆城市投资建设网站
  • 电子商务网站费用wordpress 怎么手动更新
  • 中国空间站设计在轨飞行多少年南昌网站建设风格
  • 用php写的网站有哪些暖暖 视频 在线 观看 高清
  • 云空间网站怎么做海南旅游网网页制作
  • 常宁网站免费的ai作图软件
  • 网站建设讲师招聘如何做电商产品推广
  • 让百度收录网站网站开发流程进度表
  • 有几个网站能在百度做推广产品开发管理系统
  • 一个网站项目的价格表dz论坛seo
  • 企业做网站要多少钱哪个网站做动图
  • 知名企业网站例子4s店网站模板
  • 网站建设的信息安全防范技术初级买题做哪个网站好