0
点赞
收藏
分享

微信扫一扫

Linux学习笔记(6)

路西法阁下 2022-01-12 阅读 75

文章目录

🍭Linux学习笔记(6)

🍭冯诺依曼体系结构

image-20220111232137788

🍊输入设备: 键盘、网卡、话筒

🍊存储器: 通常指的内存

存储器通常指的是内存,不考虑缓存,这里的CPU只能对内存进行读写,不能访问外设

🍊运算器和控制器 : CPU

🍊输出设备:显示器、网卡、音响

🍊先说结论:在冯诺依曼体系下,所有的设备都只能直接和内存打交道

解释:在冯诺依曼体系下,输入输出设备,CPU(控制器和运算器)都只能和内存进行交互,即外设输入或输出数据,也只能写入内存或者从内存中读取

原因:相对CPU来说,输入输出设备的速度是比较慢的,而CPU处理数据的速度很快,如果不经过内存,就会导致不能完全发挥CPU的性能,也即木桶效应

image-20220112124016845

🍭简单介绍操作系统(operating system,简称OS)

层次图:

操作系统把代码转化为指令交给CPU执行

🍭进程

🍈进程概念:程序的一次执行过程

🍈PCB(process control block):进程控制块,可以看作是进程属性的集合

作用:描述进程,Linux系统下的PCB是task_struct

🍈社会上我们的身份证可以表示我们的身份,也就是我们的ID

Linu如何表示进程呢?

进程也有自己的ID,称作PID,通过PID就可以表示一个进程

假如Linux下我们写一段C代码:

test.c
#include<stdio.h>    
#include<unistd.h>    
int main()    
{    
  int a;    
  a=1+1;    
  while(1)    
  {    
  printf("I am a process,pid::%d\n",getpid());  
     			//getpid()是得到当前进程ID的一个函数                         
    sleep(1);    
  }    
  return 0;    
} 

写完后,test.c编译链接生成可执行程序test,通过系统接口给到操作系统,操作系统新建一个进程来运行test.

🍈Linux下查看进程

🍍ps命令查看进程

🍒ps aux |grep test

image-20220112141928473

上面就是进程的具体信息

可以和grep配合使用查找想看的进程,比如此时我们运行test

image-20220112142317993

显然,26543就是test进程的ID了.

🍒ps axj

image-20220112195054871

🍒 ps axj |head -数字 &&ps axj| grep 关键字

image-20220112231135932

🍒 进程也有父进程,可以通过函数getppid()看到

#include<stdio.h>    
#include<unistd.h>    
int main()    
{    
  int a;    
  a=1+1;    
  while(1)    
  {    
  printf("I am a process,pid::%d,my father is%d\n",getpid(),getppid());    
    sleep(1);    
  }    
  return 0;    
} 

运行:

image-20220112143404655

pid就是当前进程的编号,这里就是27848,父进程的编号(PPID)是20197

🍍top 也可以看到进程信息

按q退出

image-20220112144424985

🍍在 proc目录内也可以看到进程的相关信息

proc目录在根目录下

🍍cd /proc

image-20220112144856106

cd 20197 进入20197,里面的文件就是进程属性的记录

image-20220112144934879

🍍上下文数据:进程执行时cpu内的寄存器的数据

🍍进程切换的例子:优先级高的进程来了 时间片到了

🍍上下文的保存与恢复:场景就是切换进程

优先级高的进程来了,时间片到了都可以使得进程停止

🍍上下文的保存与恢复:场景就是切换进程

🍭末尾 📖

这篇文章很多地方没有讲的透彻,因为我也才刚接触操作系统,这篇博客仅作记录用,如果有错误麻烦指出,敬请海涵
如果有帮助的话麻烦点个赞鼓励一下!

举报

相关推荐

0 条评论