首页 > 系统相关 >Linux:进程的概念

Linux:进程的概念

时间:2024-11-18 12:44:57浏览次数:3  
标签:fork task 操作系统 概念 内存 Linux 进程 OS

文章目录

一、 冯诺依曼体系结构

计算机硬件上的结构:
在这里插入图片描述
输入设备:键盘,鼠标,话筒,摄像头……网卡,磁盘
输出设备:显示器、磁盘、网卡,打印机……
输入/输出设备称为外设,Input/Output->IO,站在内存的角度理解IO

CPU = 运算器 + 控制器

存储器:内存
磁盘是外部存储

二、操作系统(Operator System)

1、概念

任何计算机系统都包含⼀个基本的程序集合,称为操作系统(OS)。
操作系统一款进行软硬件管理的系统软件。
操作系统包括:
• 内核(进程管理,内存管理,⽂件管理,驱动管理)
• 其他程序(例如函数库,shell程序等等)

在这里插入图片描述

2、设计OS的目的
  • 操作系统向下对软硬件资源管理。(不是目的,是手段)
  • 操作系统对上,为用户程序(应用程序)提供一个良好的执行环境。(目的)
    在这里插入图片描述
  • 软硬件体系结构是层状结构
  • 访问操作系统,必须使用系统调用——其实就是函数调用,只不过是系统提供的
  • 我们的程序,只要你判断出它访问了硬件,那么它必须贯穿整个软硬件体系结构
  • 库可能在底层封装了系统调用

操作系统核心:管理(先描述,再组织)

3、系统调用

操作系统要向上提供对应的服务
操作系统,不相信任何用户

用户不能直接访问操作系统内部的信息,必须通过系统调用返回信息。

三、进程的基本概念与基本操作

1、概念
  • 课本概念:程序的一个执行实例,正在执行的程序等。

  • 内核观点:担当分配系统资源(CPU时间,内存)的实例。

  • 进程 = 内核数据结构对象 + 自己的代码和数据

2、描述进程——PCB
  • 进程信息被放在⼀个叫做进程控制块的数据结构中,可以理解为进程属性的集合。
  • 课本上称之为PCB(process control block),Linux操作系统下的PCB是:task_struct
  • 进程的所有属性,都可以直接或者间接通过进程控制块找到

在linux具体的进程:

  • 进程 = PCB(task_struct) + 自己的代码和数据
3、task_struct

在这里插入图片描述

4、getpid 获取进程ID

谁调用这个函数就获取谁的进程ID
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5、ps axj 所有的以特定格式的进程

在这里插入图片描述

也可以使用 top 命令来查,但查看全部太多了不方便我们看

只查看当前我们的进程:
在这里插入图片描述
显示进程对应的信息:
在这里插入图片描述
连续执行两条指令,用分号依次隔开:
在这里插入图片描述

也可以使用 && 隔开两条指令,效果跟分号一样
在这里插入图片描述

6、kill - 9 + pid 杀掉进程

-9是信号
在这里插入图片描述

7、ls /proc 通过目录结构查看进程

在这里插入图片描述
对应的每个数字目录都是一个进程,数字对应的是进程的pid
目录里面存的是进程对应的各种属性
在这里插入图片描述
cdw(current work dir) : 存放当前路径
exe :存放可执行程序所在的路径

函数 chdir修改当前路径
在这里插入图片描述

8、getppid 获取父进程

Linux系统所以的进程都是被它的父进程创建的
一个父进程可以有多个子进程,进程也是进程树
在这里插入图片描述

在这里插入图片描述
-bash是命令行解释器:本质也是一个进程

  • OS会给每一个登录的用户,分配一个bash(-bash代表远程登录)!
9、fork创建子进程

在这里插入图片描述
在这里插入图片描述
本来是一个执行流的遇到fork会变成两个执行流

  • 子进程没有自己独立的代码和数据,因为目前没有程序新加载

让父子执行不同的代码
在这里插入图片描述
创建失败返回值小于0
在父进程里的代码中fork()返回值是子进程的pid
在子进程里的代码中fork()返回值是等于0的
在这里插入图片描述

  • 进程具有独立性
  • 数据默认是共享的,但父子如何一方,进行修改数据,OS就会把修改的数据在底层拷贝一份,让目标进程修改这个拷贝!(写时拷贝)

四、进程的状态

进程状态就是task_struct内的一个整数

  • 运行:进程在调度队列中,进程的状态都是running!
  • 阻塞:等待某种设备或者资源就绪,键盘、显示器、网卡、磁盘、摄像头、话筒……
  • 进程状态的变化,表现之一,就是要在不同的队列中进行流动。本质都是数据结构的增删查改!
  • 挂起:当操作系统的内存资源不足时,把进程的代码和数据换入到磁盘中,真正运行进程时再换入到内存里
1、Linux内核中进程的状态

在这里插入图片描述
R:运行状态
S:阻塞状态,可中断休眠,浅睡眠
D:深度睡眠,不可中断休眠
t:gdb时进程被debug暂停
T:用户Ctrl+z,进程暂停
X:结束状态
Z:僵尸状态,为了获取退出信息

标签:fork,task,操作系统,概念,内存,Linux,进程,OS
From: https://blog.csdn.net/2401_83305953/article/details/143721870

相关文章

  • C语言在linux上实现进程线程开发
    环境操作系统:Linux线程创建线程创建函数#include<pthread.h>/**@description线程创建函数*@paramtidp线程标识符*@paramattr线程属性指针*@paramstart_rtn线程执行函数(void*fun(void*))*@paramarg线......
  • linux驱动开发框架
    前言一、环境搭建不同系统不一样,需要安装内核的开发包,下面是kalilinux的方式,里面的版本号使用uname-r确认sudoaptinstalllinux-image-6.11.2-amd64-dbglinux-headers-6.11.2-amd64二、开发指导1.基本模板1.1.Makefile编写Makefile第一个M要大写,不然也会报错......
  • Linux :进程间通信之管道
    一、进程间通信1.1是什么和为什么1、进程间通信是什么??——>两个或多个进程实现数据层面的交互,但是由于进程独立性的存在,导致通信的成本比较高。2、既然通信成本高,那为什么还要通信呢??——> 在某些场景下我们需要不同进程之间进行(1)基本数据的交互。(2)发送命令。(3)实现某种......
  • linux 安装 docker
    安装yum-utilsyuminstall-yyum-utils\device-mapper-persistent-data\lvm2--skip-broken执行如果报错Cannotfindavalidbaseurlforrepo:base/7/x86_64解决办法编辑/etc/yum.repos.d/CentOS-Base.repo[base]name=CentOS-$releaseve......
  • 5、oracle内存及进程操作讲解
    内存结构1、sharedpool缓存着sql、sql执行计划查询sharedpool大小:select*fromv$sga_dynamic_components;2、buffercache缓存着数据文件里面的block查看buffercache里面的buffer:select*fromv$bh;一行一个bufferbuffer里面有一个字段:TCH用户登录上数据库以......
  • 4、oracle进程讲解
    进程结构serverprocess服务器进程前台进程(foregroundprocess):serverprocess(服务器进程)用户连接到数据库实例以后,暂时可以认为是:对每一个用户连接,oracle实例会启动一个进程,专门对这个连接会启动一个进程,这个进程它属于serverprocess这一类,因为serverprocess有好多进程;serve......
  • linux 下安装 jdk
    linux下安装jdk-11----1----https://download.oracle.com/java/GA/jdk11/9/GPL/openjdk-11.0.2_linux-x64_bin.tar.gz解压安装包tar-xvfopenjdk-11.0.2_linux-x64_bin.tar.gz或tar-xzvfjdk-11.0.23_linux-x64_bin.tar.gz编辑profile文件vim/etc/profileJAVA_HOME=......
  • 低成本玩转Linux开发板(基于NUC980双层板)原理图+PCB分享
    更多电路设计,PCB设计分享及分析,可关注本人微信公众号“核桃设计分享”!由于公司项目需求,一直在找一款能跑Linux系统,外围接口丰富的,关键是必须要有CAN,UART,RMII等接口的芯片(无需LCD,HDMI,eDP)。对于一般的多媒体芯片来说,类似于瑞芯微,全志,海思,NXP等方案上,基本都是BGA封装的居多,CAN......
  • linux常用命令有哪些?
    在Linux中,常用命令有很多,主要包括文件管理、系统管理、网络配置、用户管理等方面。以下是一些常见的Linux命令及其功能:1.文件和目录管理ls列出当前目录下的文件和子目录。常用选项:-l:长格式显示详细信息-a:显示所有文件,包括隐藏文件-h:以人类可读的格式显示文件大小(如K......
  • 70.Linux虚拟机网络有关配置总结
    这个Java开发怎样都绕不开虚拟机服务端的理解学习当初都是模棱两可的学习现在总是要总结的首先如果你的ens33无出现那种什么service开启了还有啥虚拟网卡都开启了大致就简单还原一些默认设置就好了当然还有一种可能就是我当初总结过的https://www.cnblogs.com/gaodiyu......