博客
关于我
【进程】进程的基本概念理解
阅读量:502 次
发布时间:2019-03-07

本文共 1098 字,大约阅读时间需要 3 分钟。

基本概念

冯诺依曼计算机体系结构

冯诺依曼体系结构是现代计算机的基础架构,主要包含以下组成部分:

  • 输入设备:如键盘、鼠标等
  • 输出设备:显示屏、打印机
  • 存储器:内存(RAM)、磁盘(HDD、SSD)
  • 运算器:中央处理单元(CPU)
  • 控制器:南桥和北桥

操作系统

操作系统是计算机的管理软件,主要功能包括:

  • 内核:负责进程管理、内存管理、文件管理、设备驱动管理等核心任务
  • 系统调用:操作系统提供的接口,供程序调用进行各种操作
  • 库函数:对系统调用进行封装,便于开发者使用

进程

进程基本概念

从程序层面看,进程是一个正在执行的程序实例。

从系统层面看,进程是资源的拥有者,负责分配和管理系统资源(CPU、内存等)。

进程描述(PCB)

进程的出现可以用进程控制块(PCB)来描述,系统需要记录进程的各项属性,主要包括:

  • 唯一标识符
  • 状态和退出信息
  • 优先级
  • 程序计数器
  • 内存指针
  • 上下文数据
  • I/O状态信息
  • 记账信息

查看进程的方式

进程信息可以通过以下命令查看:

  • ps aux:显示所有进程
  • ps -elf:显示详细进程信息
  • top:实时监控进程状态

创建进程(fork)

以下是用C语言演示的fork函数程序:

#include 
#include
#include
int main() { int ret = fork(); if (ret < 0) { perror("fork"); return 1; } else if (ret == 0) { // 子进程 printf("I am child : %d!, ret: %d\n", getpid(), ret); } else { // 父进程 printf("I am father : %d!, ret: %d\n", getpid(), ret); } sleep(1); return 0;}

进程状态

进程的运行状态包括以下几种:

  • R:运行状态
  • S:睡眠状态
  • D:磁盘睡眠状态
  • T:停止状态
  • X:死亡状态

僵尸进程

定义:当进程退出但父进程未调用wait/waitpid等函数等待时,子进程会成为僵尸进程。

表现:僵尸进程占用系统资源,可能导致内存泄漏。

解决方法

  • 父进程在子进程退出后及时调用wait/waitpid
  • 使用信号函数等待子进程退出

孤儿进程

当父进程提前退出而子进程仍在运行时,子进程会被1号init进程领养,其资源由init回收。

转载地址:http://vsacz.baihongyu.com/

你可能感兴趣的文章
ado读取多条oracle数据,Oracle ADO数据存取
查看>>
anaconda新建python2环境安装不了jupyterlab_anaconda3安装及jupyter环境配置教程(全)...
查看>>
android asynctask handler 区别,AsyncTask与Thread+Handler简要分析
查看>>
android fastjson漏洞_初识Fastjson漏洞(环境搭建及漏洞复现)
查看>>
android pod 组件化_CocoaPods 组件化实践 - 私有Pod
查看>>
$CH0201$ 费解的开关
查看>>
android进程管理策略,Android进程保活
查看>>
arduino蓝牙通讯代码_arduino 联接蓝牙模块
查看>>
asp.mvc 4项目发布文件目录结构_如何用SpringBoot(2.3.3版本)快速搭建一个项目?文末有小彩蛋...
查看>>
aspen串联反应怎么输入_如何进步提升串联谐振试验装置的稳定性
查看>>
aspose html转pdf_Java实现Word/Pdf/TXT转html
查看>>
a推b等价于非a或b_AB胶/蜜月胶常见问题的原因分析及解决方法
查看>>
bat 命令返回结果_【批处理】带你入门命令行
查看>>
c++ string取子串_Integer与String的设计哲学
查看>>
c++ 数组批量赋值_数组之间不能赋值?穿个马甲吧!
查看>>
cad模糊查询符号_mysql 正则模式和like模糊查询
查看>>
continue可以用if判断里面吗_谁能说说if()else()里的continue是干嘛的?
查看>>
ctrl c 和 ctrl v 不能用了_神奇操作,原来CTRL键还能这么用
查看>>
cytoscape安装java_Cytoscape史上最全攻略
查看>>
c语言程序设计年历显示,C语言程序设计报告《万年历》.doc
查看>>