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

陕西网站推广公司雄安做网站的公司

陕西网站推广公司,雄安做网站的公司,南昌互联网网站开发,做er图的网站Linux 操作系统中就是创建进程。创建进程的系统调用叫fork。在 Linux 里#xff0c;要创建一个新的进程#xff0c;需要一个老的进程调用 fork 来实现#xff0c;其中老的进程叫作父进程#xff08;Parent Process#xff09;#xff0c;新的进程叫作子进程#xff08;C… Linux 操作系统中就是创建进程。创建进程的系统调用叫fork。在 Linux 里要创建一个新的进程需要一个老的进程调用 fork 来实现其中老的进程叫作父进程Parent Process新的进程叫作子进程Child Process。 当父进程调用 fork 创建进程的时候子进程将各个子系统为父进程创建的数据结构也全部拷贝了一份甚至连程序代码也是拷贝过来的。按理说如果不进行特殊的处理父进程和子进程都按相同的程序代码进行下去这样就没有意义了。 对于 fork 系统调用的返回值如果当前进程是子进程就返回 0如果当前进程是父进程就返回子进程的进程号。这样首先在返回值这里就有了一个区分然后通过 if-else 语句判断如果是父进程还接着做原来应该做的事情如果是子进程需要请求另一个系统调用execve来执行另一个程序这个时候子进程和父进程就彻底分道扬镳了也就产生了一个分支fork了。 有个系统调用waitpid父进程可以调用它将子进程的进程号作为参数传给它这样父进程就知道子进程运行完了没有成功与否。 在操作系统中每个进程都有自己的内存互相之间不干扰有独立的进程内存空间。 对于进程的内存空间来讲放程序代码的这部分我们称为代码段Code Segment。 对于进程的内存空间来讲放进程运行中产生数据的这部分我们称为数据段Data Segment。其中局部变量的部分在当前函数执行的时候起作用当进入另一个函数时这个变量就释放了也有动态分配的会较长时间保存指明才销毁的这部分称为堆Heap。 进程自己不用的部分就不用管只有进程要去使用部分内存的时候才会使用内存管理的系统调用来登记说自己马上就要用了希望分配一部分内存给它但是这还不代表真的就对应到了物理内存。只有真的写入数据的时候发现没有对应物理内存才会触发一个中断现分配物理内存。 当分配的内存数量比较小的时候使用 brk会和原来的堆的数据连在一起这就像多分配两三个工位在原来的区域旁边搬两把椅子就行了。当分配的内存数量比较大的时候使用 mmap会重新划分一块区域也就是说当办公空间需要太多的时候索性来个一整块。 对于文件的操作下面这六个系统调用是最重要的 对于已经有的文件可以使用open打开这个文件close关闭这个文件对于没有的文件可以使用creat创建文件打开文件以后可以使用lseek跳到文件的某个位置可以对文件的内容进行读写读的系统调用是read写是write。 Linux 里有一个特点那就是一切皆文件。 启动一个进程需要一个程序文件这是一个二进制文件。启动的时候要加载一些配置文件例如 yml、properties 等这是文本文件启动之后会打印一些日志如果写到硬盘上也是文本文件。但是如果我想把日志打印到交互控制台上在命令行上唰唰地打印出来这其实也是一个文件是标准输出 stdout 文件。这个进程的输出可以作为另一个进程的输入这种方式称为管道管道也是一个文件。进程可以通过网络和其他进程进行通信建立的 Socket也是一个文件。进程需要访问外部设备设备也是一个文件。文件都被存储在文件夹里面其实文件夹也是一个文件。进程运行起来要想看到进程运行的情况会在 /proc 下面有对应的进程号还是一系列文件。 每个文件Linux 都会分配一个文件描述符File Descriptor这是一个整数。有了这个文件描述符我们就可以使用系统调用查看或者干预进程运行的方方面面。 对于一些不严重的信号可以忽略该干啥干啥但是像 SIGKILL用于终止一个进程的信号和 SIGSTOP用于中止一个进程的信号是不能忽略的可以执行对于该信号的默认动作。每种信号都定义了默认的动作例如硬件故障默认终止也可以提供信号处理函数可以通过sigaction系统调用注册一个信号处理函数。 Glibc 是 Linux 下使用的开源的标准 C 库它是 GNU 发布的 libc 库。Glibc 为程序员提供丰富的 API除了例如字符串处理、数学运算等用户态服务之外最重要的是封装了操作系统提供的系统服务即系统调用的封装。 每个特定的系统调用对应了至少一个 Glibc 封装的库函数比如说系统提供的打开文件系统调用 sys_open 对应的是 Glibc 中的 open 函数。 有时候Glibc 一个单独的 API 可能调用多个系统调用比如说Glibc 提供的 printf 函数就会调用如 sys_open、sys_mmap、sys_write、sys_close 等等系统调用。 也有时候多个 API 也可能只对应同一个系统调用如 Glibc 下实现的 malloc、calloc、free 等函数用来分配和释放内存都利用了内核的 sys_brk 的系统调用。 此文章为10月Day17学习笔记内容来源于极客时间《趣谈Linux操作系统》推荐该课程。
http://www.w-s-a.com/news/536470/

相关文章:

  • 用户上传商品网站用什么做建设跳转公积金网站
  • 买程序的网站上海市网站建设公司
  • 南通网站建设排名公司哪家好wordpress网站图片迁移
  • 河南省汝州文明建设门户网站博客网站建设源码
  • 单位建设网站的请示手机移动端网站案例
  • 国内做网站的企业网站结构有哪些类型
  • 南通网站建设制作公司苏州好的网站公司名称
  • 咸阳做网站开发公司哪家好珠海公司制作网站
  • 深圳网站建设好不好医疗网站前置审批
  • 做ic什么网站好安溪网站建设
  • 网站建设 慕课企业文化标语经典
  • 做短视频的网站都有哪些简约 时尚 高端 网站建设
  • 浦口区网站建设售后服务建设一个网站多少钱
  • 做个小网站大概多少钱广州h5网站
  • 360免费建站视频wordpress标签显示图片
  • 创建简易个人网站国外做网站被动收入
  • 轻定制网站建设网页培训哪个机构好
  • 青岛海诚互联做网站好吗计算机软件开发培训机构
  • 德钦网站建设如何在网站上做用工登记
  • 创意品牌网站云服务
  • 个人备案网站可以做商城展示如何制作网页二维码
  • 网站建设php教程视频百度seo 站长工具
  • 外包小程序两个相同的网站对做优化有帮助
  • 网站备案主体修改wordpress 导航图片
  • 怎么建设网站数据库用vs代码做网站
  • 运营企业网站怎么赚钱动漫制作专业概念
  • 宜春网站建设推广网络推广工作好干吗
  • 网站程序0day平顶山市做网站
  • 企业网站名称怎么写哔哩哔哩网页版官网在线观看
  • 直播网站建设书籍阿里巴巴网站建设销售