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

口碑好的广州做网站域名是什么意思

口碑好的广州做网站,域名是什么意思,浦东做营销网站,宝鸡外贸网站建设1.进程的概念 1. 什么是进程? 进程是一个运行中的程序。当可执行文件被加载到内存中时,该程序就成为了一个进程。 2. 多进程管理 操作系统中可能同时存在大量的进程吗?当然可以 操作系统需要管理这些进程,以确保系统资源&…

1.进程的概念

1. 什么是进程?

进程是一个运行中的程序。当可执行文件被加载到内存中时,该程序就成为了一个进程。

2. 多进程管理

操作系统中可能同时存在大量的进程吗?当然可以

操作系统需要管理这些进程,以确保系统资源(如CPU时间、内存等)合理分配管理进程的本质是对进程数据的管理。

我们需要 先描述再组织。

所以,当一个程序加载到内存时,操作系统做的不仅仅只是把代码和数据加入到内存,

还要管理进程,创建对应的数据结构。

Linux 操作系统的内核是 C 语言写的,描述时就用到struct

2.描述进程--PCB

在操作系统中,用于描述进程的结构体称为进程控制块PCB(process control block)。在Linux中,这种结构体称为 task_struct

task_struct 的结构

struct task_struct {volatile long state;void *stack;atomic_t usage;unsigned int flags;     unsigned int ptrace;unsigned long ptrace_message;siginfo_t *last_siginfo; int lock_depth;         // ... 其他属性
};

task_struct 包含进程的所有属性数据,如进程状态、优先级、程序计数器、内存指针、上下文数据、I/O状态信息和记账信息等。 

操作系统对进程的管理,最终变成了对链表的增删查改。

什么是进程?目前为止我们可以总结成:进程 = 可执行程序 + 该进程对应的内核数据结构

操作系统不相信任何人的,不会直接暴露自己的任何数据结构,代码逻辑,其他数据相关的细节。

想做系统是通过 系统调用 的方式,对外提供接口服务的。

下面我们将来学习一些系统接口

3. 进程查看与管理

1.使用指令查看进程

先创建一个死循环进行测试

 在另一个终端输入以下指令,可以看到进行中的程序./myproc

按ctrl + c结束程序,再输入指令发现进程也结束了,看不到./myproc 

 

通过指令如 ps 和 top 可以查看系统中的进程信息。例如,使用 ps aux 可以显示系统中所有的进程

若需查看特定进程,可以使用 grep 过滤:

2.通过系统调用获取进程标示符

 系统调用getpid(),返回当前进程ID

杀掉一个进程还可以用kill命令 kill -9 + 进程ID

/proc 查看进程信息 

 在 Linux 系统中,/proc 是一个非常重要的伪文件系统(内存级别),不是磁盘文件,也被叫做 “进程文件系统”。它的作用是提供内核数据结构的接口,让用户可以通过文件的形式访问系统进程和内核的信息,而不需要直接与内核进行交互

如下图,我们运行myproc.c,在proc目录里就创建了一个文件夹,名字就是./myproc的进程ID

文件夹里记录这myproc的所有进程信息

在 Linux 系统中,当这个程序已经运行起来的时候,删掉可执行程序,依然可以继续运行,因为已经被加载到内存中 

exe:通过这个链接,能够确定进程当前运行的是哪个程序。(指出进程对应的可执行程序的磁盘文件)

cwd: 当前工作目录(指出进程当前的工作路径)

理解CWD(理解当前路径)

CWD(Current Working Directory)是一个指向进程当前工作目录的符号链接。通过该链接可以确定进程当前正在操作的目录路径。

看以下代码,我们在学习C语言时,文件创建fopen后面如果不带路径,就在默认路径下创建

所谓的当前路径是什么呢?其实是当前进程所在的路径(CWD)

进程会自己维护,进程会知道自己的工作路径在哪里

 可以通过chdir改变当前工作路径

3.ppid

在linux系统中,启动之后,新创建任何进程的时候,都是由自己的父进程创建的!

系统调用getppid获取父进程,发现ppid不变,我们的程序myproc是由-bash创建的

bash是Linux系统中最常用的命令行解释器(shell)所以我们在命令行中创建的进程都是bash做的(命令行中,执行程序/命令,本质是bash的进程,创建子进程,由子进程执行我们的代码)

 4.使用系统调用,创建进程

fork创建子进程

运行以下代码,发现fork()之后,printf打印了两次

说明有两个执行流,父进程和子进程

 

 执行以下代码,看fork函数的返回值:

  • 返回值决定当前执行环境:
    • 子进程:返回 0
    • 父进程:返回子进程的 PID(正整数)
    • 失败:返回 -1(如内存不足或进程数达到上限)

 上面代码if和else if 为什么会同时成立?

原因:fork()的 机制

fork() -> 两个进程 -> 父子关系 -> 一般而言,代码父子共享,但是数据各自私有一份

我们的程序myproc.c第一次从磁盘加载到内存,操作系统为它创建PCB , 当代码执行到fork()时,

为什么代码共享?因为子进程并没有二次加载

新创建进程,操作系统也要为它创建PCB,父进程和子进程的区别在于父进程从磁盘中加载代码和数据,新创建的子进程并没有从磁盘中加载代码和数据,而进程=内核数据结构+代码和数据,子进程只有内核数据结构,子进程从父进程中加载代码和数据,子进程和父进程共享一份代码

验证数据各自私有

先看以下代码对于同一份全局变量,父进程只读不做修改,子进程做修改,观察结果

父进程的gval=0,子进程的gval不断变化

 说明:进程具有很强的独立性,多个进程之间,运行时,互不影响,即便是父子进程

返回的本质,就是向指定变量进行写入返回值数据

打印的本质,就是读取

http://www.dtcms.com/wzjs/186411.html

相关文章:

  • 找人做菠菜网站需要多少钱指定关键词排名优化
  • 自己的网站可以做淘客吗北京seo代理计费
  • 公司网站公众号维护怎么做外贸企业网站设计公司
  • 多城市网站如何做seo海南百度推广公司有哪些
  • wordpress 网店插件上海搜索引擎优化公司
  • 59网站一起做网店普宁seo如何优化关键词上首页
  • vr模式的网站建设公司运营培训班有用吗
  • 做物流网站多少钱推广发帖网站
  • wordpress menu_walker做seo用哪种建站程序最好
  • 建设大型的企业网站费用扫图片识别图片原图
  • 权威发布图片红字北京seo公司wyhseo
  • 宁波cms模板建站开鲁网站seo站长工具
  • 公司网站流程seo专业培训需要多久
  • 租服务器做网站沈阳疫情最新消息
  • 怎样设计卖奖的网站如何规划企业网络推广方案
  • 大兴企业官方网站建设seo是什么软件
  • 南京网站房地产十大经典事件营销案例
  • 做网站需要提供哪些资料做了5天游戏推广被抓了
  • 政府网站建设网页设计规范银川网站seo
  • 找人做辅助的网站新开网站
  • 如何做新闻源网站附近有没有学电脑培训的
  • 茶叶网站的建设策划书百度推广助手
  • 网站开发找什么论文进入百度搜索网站
  • 装饰公司取名关键词推广seo
  • 鄂州做网站的公司网站seo关键词设置
  • 网站建设学什么的新闻发稿公司
  • 现在写博客还是做网站怎么在百度上发布个人文章
  • 网站的制作建站人百度搜索风云榜单
  • mt4外汇金融网站建设网络广告策划方案
  • 橙子建站突然发验证码公司网站怎么建立