进程与程序

进程与程序

学习目标:

  • 了解进程相关概念
  • 了解虚拟内存和物理内存映射关系
  • 了解pcb进程控制块
  • 掌握fork函数

进程相关概念:

  • 进程和程序
    • 程序:指编译好的二进制文件,保存在磁盘上,不占用系统资源
    • 进程:是活跃的程序,占用系统资源,在内存中执行。
    • 同一个程序可以加载为不同的进程。
  • 并发
    • 在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。
  • 单道程序设计
    • 在计算机内存中只允许一个程序运行
  • 多道程序设计
    • 在计算机内存中同时存放几道相互独立的程序,在管理程序控制下,相互穿插运行,共享系统资源。

虚拟内存和物理内存映射关系:

在32位操作系统中,每个进程都有独立的4G(2^32)字节的虚拟内存空间,其中0 ~ 3G为用户空间,3G ~ 4G为内核空间。

  • 虚拟内存
    • 所有的进程共享一块物理内存。
    • MMU完成虚拟内存与物理内存间的映射
    • 通过页表来记录哪些地址空间上的数据在物理内存上,以页(4096字节)为单位。
    • 用户空间不能直接访问内核空间,MMU把内存分级(Linux只有个两级,0级和3级),MMU通过权级切换来间接的与内核交互。
      在这里插入图片描述

PCB进程控制块:

PCB进程控制块:为了描述控制进程的运行,系统中存放进程的管理和控制信息的数据结构称为进程控制块

  • PCB包括
    • 进程ID:唯一的,每个进程都包含一个PID。
    • 文件描述符。
    • 进程状态:初始态、就绪态、运行态、挂起态、终止态。
    • 进程工作目录位置
    • umask掩码:文件权限掩码。
    • 信号相关信息资源。
    • 用户id和组id。

fork函数:

fork函数:将运行着的程序分成2个(几乎)完全一样的进程,每个进程都启动一个从代码的同一位置开始执行的线程。

pid_t fork(void);

创建子进程,父子进程各自返回。父进程返回子进程pid,子进程返回0。

pid_t  getpid(void);
pid_t  getppid(void);

获取进程id和父进程id。


补充:

父子进程相同(fork后):data段、text段、堆、栈、环境变量、全局变量、宿主目录位置、进程工作目录位置、信号处理方式。 父子进程不同:进程id、返回值、各自的父进程、进程创建时间、闹钟、未决信号集。 父子进程共享:读时共享、写时复制。 - 文件描述符 - mmap映射区
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值