Linux相关的内容(七)

熟悉的二哈开头Linux相关的内容(七)_第1张图片
这一章讲述关于Linux的进程的具体内容

文章目录

  • 冯诺依曼体系结构
    • 输入设备
    • 存储器
    • 运算器和控制器
    • 输出设备
    • 操作系统
  • 进程
    • 基本概念
    • 被存放在PCB之中(process control block)
    • task_struct的内容分类
  • 进行进程查看(反正内容一些,我没有看懂!)
    • 通过指令进行导入系统文件
    • 通过系统调用获取进程标示符
    • 通过fork初始创建进程
  • 进程的状态
    • 进程状态查看的指令
    • 僵尸进程
  • 环境变量
    • 基本概念
    • 环境变量基本操作方式
    • 常见的环境参数
  • 环境变量的组织方式
  • 环境变量通常是具有全局属性的

冯诺依曼体系结构

Linux相关的内容(七)_第2张图片
这就是计算机的基本组成成分,几乎包括所有的计算机。

输入设备

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

存储器

这里指的是内存条

运算器和控制器

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

输出设备

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

操作系统

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


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

进程

基本概念

一个正在执行的程序实例

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

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

task_struct的内容分类

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

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

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

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

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

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

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

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

其他信息

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

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

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

进程的信息可以通过 /proc 系统文件夹查看
Linux相关的内容(七)_第3张图片

左边为进程信息

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

#include 
#include 
#include 
int main(){
 printf("pid: %d\n", getpid());
 printf("ppid: %d\n", getppid());
 return 0;
}

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

通过fork初始创建进程

通过Linux的gcc,然后应用这个进程操作 
具体的操作我还没有看懂
让进程复制为两个完全相同的字子,父进程。而我们的操作都是在子进程之中进行的。
#include 
#include 
#include 
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: 显示所有环境变量[重点]

Linux相关的内容(七)_第4张图片
后面还有具体内容这里不进行描述

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

Linux相关的内容(七)_第5张图片

常见的环境参数

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

这个为root用户的
Linux相关的内容(七)_第6张图片
这个外普通用户的root内容
在这里插入图片描述

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

环境变量的组织方式

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

Linux相关的内容(七)_第7张图片

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

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

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

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

你可能感兴趣的:(Linux,linux,运维,服务器)