Linux相关的内容(七)

熟悉的二哈开头请添加图片描述
这一章讲述关于Linux的进程的具体内容

冯诺依曼体系结构

在这里插入图片描述
这就是计算机的基本组成成分,几乎包括所有的计算机。

输入设备

包括键盘,鼠标等外部输入的设备

存储器

这里指的是内存条

运算器和控制器

其都在cpu之中组成(cpu封装有这些东西)

输出设备

包括屏幕,声音🔊等输出消息的设备

操作系统

内核和其他程序组成,主要是起管理的作用


上面的内容是粗省略介绍了关于计算机

进程

基本概念

一个正在执行的程序实例

被存放在PCB之中(process control block)

在Linux中描述进程的结构体叫做task_struct。
task_struct是Linux内核的一种数据结构,会被装载在内存之中。
这种结构体包括进程的信息

task_struct的内容分类

标示符: 描述本进程的唯一标示符,用来区别其他进程。

状态: 任务状态,退出代码,退出信号等。

优先级: 相对于其他进程的优先级。

程序计数器: 程序中即将被执行的下一条指令的地址。

内存指针: 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针。

上下文数据: 进程执行时处理器的寄存器中的数据[休学例子,要加图CPU,寄存器]。 

I/O状态信息: 包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。

记账信息:可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等。

其他信息

上面的内容😱仅供参考,本人一些内容也不知道(复制粘贴来的,关于内容分类)

进行进程查看(反正内容一些,我没有看懂!)

通过指令进行导入系统文件

进程的信息可以通过 /proc 系统文件夹查看
在这里插入图片描述

左边为进程信息

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

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main(){
 printf("pid: %d\n", getpid());
 printf("ppid: %d\n", getppid());
 return 0;
}

在Linux之中运行用gcc,然后可以得到结果!gcc的使用之后好会讲述!

通过fork初始创建进程

通过Linux的gcc,然后应用这个进程操作 
具体的操作我还没有看懂
让进程复制为两个完全相同的字子,父进程。而我们的操作都是在子进程之中进行的。
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
 int ret = fork();
 printf("hello proc : %d!, ret: %d\n", getpid(), ret);
 sleep(1);
 return 0;
}

进程的状态

可以通过看进程代码可以看成进程的不同状态
R运行状态(running): 并不意味着进程一定在运行中,它表明进程要么是在运行中要么在运行队列
里。

S睡眠状态(sleeping): 意味着进程在等待事件完成(这里的睡眠有时候也叫做可中断睡眠
(interruptible sleep))。

D磁盘休眠状态(Disk sleep)有时候也叫不可中断睡眠状态(uninterruptible sleep),
在这个状态的进程通常会等待IO的结束。

T停止状态(stopped): 可以通过发送 SIGSTOP 信号给进程来停止(T)进程。
这个被暂停的进程可以通过发送 SIGCONT 信号让进程继续运行。

X死亡状态(dead):这个状态只是一个返回状态,你不会在任务列表里看到这个状态。

进程状态查看的指令

ps 【选项】 【参数】
选项
-A:列出所有的行程(执行的程序)
-w:显示加宽可以显示较多的资讯
-au:显示较详细的资讯
-aux:显示所有包含其他使用者的行程
au(x):输出格式 :
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER: 行程拥有者
PID: pid
%CPU: 占用的 CPU 使用率
%MEM: 占用的记忆体使用率
VSZ: 占用的虚拟记忆体大小
RSS: 占用的记忆体大小
TTY: 终端的次要装置号码 (minor device number of tty)
STAT: 该行程的状态:
D: 不可中断的静止 (通悸□□缜b进行 I/O 动作)
R: 正在执行中
S: 静止状态
T: 暂停执行
Z: 不存在但暂时无法消除
W: 没有足够的记忆体分页可分配
<: 高优先序的行程
N: 低优先序的行程
L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
START: 行程开始时间
TIME: 执行的时间
COMMAND:所执行的指令
-U <用户识别码> :列出属于该用户的程序的状况,也可使用用户名称来指定,-u选项同-U
这些内容可以做为基本了解

僵尸进程

利用fork进行子父程序的创建。如果父程序被关闭,而子程序没有被关闭。
会造成内存泄露,从而造成不可改变的情况。必须要进行内存的回收。

环境变量

基本概念

环境变量(environment variables)
一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。

环境变量基本操作方式

1. echo: 显示某个环境变量值[重点]
2. export: 设置一个新的环境变量[重点]

这里设置一个环境变量为a
在这里插入图片描述

3. env: 显示所有环境变量[重点]

在这里插入图片描述
后面还有具体内容这里不进行描述

4. unset: 清除环境变量
6. set: 显示本地定义的shell变量和环境变量

在这里插入图片描述

常见的环境参数

PATH : 指定命令的搜索路径 [重点]
HOME : 指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)[重点]
(不同的用户的环境参数的内容不相同,例如root和普通用户的参数)

这个为root用户的
在这里插入图片描述
这个外普通用户的root内容
在这里插入图片描述

SHELL : 当前Shell,它的值通常是/bin/bash。

环境变量的组织方式

每个程序都会收到一张环境表,环境表是一个字符指针数组,每个指针指向一个以’\0’结尾的环境字符串

在这里插入图片描述

环境变量通常是具有全局属性的

具有全局性可以被继承子程序下去
关闭一个程序之后,不可以查找到对应的环境变量。而重新运行这个程序环境变量会重新出现

关于Linux进程的相关内容到此为止。

这篇文章,仅仅用于自己做笔记相关内容有错误请指出。谢谢🙏,我们相互学习🏫!

  • 36
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 23
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值