要想学习Linux,这些基本知识你确定你都了解清楚了吗?_学习linux要了解的基本概念

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前在阿里

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以点击这里获取!

1.1冯诺依曼

冯·诺依曼(John von Neumann,1903年12月28日-1957年2月8日),美籍匈牙利数学家、计算机科学家、物理学家,是20世纪最重要的数学家之一。 冯·诺依曼是罗兰大学数学博士,是现代计算机、博弈论、核武器和生化武器等领域内的科学全才之一,被后人称为“现代计算机之父”、“博弈论之父”。
在这里插入图片描述

1.2冯诺依曼体系结构图

![在这里插入图片描述](https://img-blog.csdnimg.cn/20210608103937452.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDk0MDQwNQ==,size_16,color_FFFFFF,t_7

1.3冯诺依曼思想

1.所有的数据都采取二进制存储(为了契合电路的特性,对应高低电平)
2.数据都被保存在存储器中(内存中)

常见的输入输出设备

输入单元:包括键盘, 鼠标,扫描仪, 写板等
中央处理器(CPU):含有运算器和控制器等
输出单元:显示器,打印机等
网卡:既是输入设备又是输出设备

1.4关于冯诺依曼,必须强调几点

  • 这里的存储器指的是内存
  • 不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)
  • 外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。
  • 一句话,所有设备都只能直接和内存打交道

2.操作系统

2.1操作系统概念

任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括:
内核(进程管理,内存管理,文件管理,驱动管理)
其他程序(例如函数库,shell程序等等)
例如win,linux,unix,Mac OS等等操作系统都是由一堆代码构成的。

操作系统在做什么?

操作系统是管理计算机中软硬件资源软件,与硬件交互
为用户程序(应用程序)提供一个良好的执行环境
在整个计算机软硬件架构中,操作系统的定位是:一款纯正的“搞管理”的软件

操作系统是怎样完成这些事情的?

管理=描述+组织
描述过程,用struct结构体
组织过程,用链表或其他高效的数据结构

2.2系统调用和库函数

在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用。
系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发.
系统调用接口:是操作系统提供给程序设计人员的一种服务。程序设计人员在编写程序时,可以利用系统调用来请求操作系统的服务。
目的:方便用户使用。
**库函数:**用来封装系统调用的函数,函数库是由系统建立的具有一定功能的函数的集合。

3.进程

3.1进程概念

课本概念:程序的一个执行实例,正在执行的程序等
内核观点:担当分配系统资源(CPU时间,内存)的实体。

特征

动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。
并发性:任何进程都可以同其他进程一起并发执行
独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;
异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进
结构特征:进程由程序、数据和进程控制块三部分组成。
多个不同的进程可以包含相同的程序:一个程序在不同的数据集里就构成不同的进程,能得到不同的结果;但是执行过程中,程序不能发生改变。

进程和程序的区别?

程序是静态的,进程是动态的,程序是存储在某种介质上的二进制代码,进程对应了程序的执行过程,系统不需要为一个不执行的程序创建进程,一旦进程被创建,就处于不断变化的动态过程中,对应了一个不断变化的上下文环境。. 程序是永久的,进程是暂时存在的。. 程序的永久性是相对于进程而言的,只要不去删除它,它可以永久的存储在介质当中。

从操作系统内核角度看进程

描述:task_struct,Linux操作系统下的PCB(进程控制块)是: task_struct,task_struct是Linux内核的一种数据结构,它会被装载到RAM(内存)里并且包含着进程的信息。
组织:使用双向链表

task_ struct内容分类

标示符: 描述本进程的唯一标示符,用来区别其他进程。
状态: 任务状态,退出代码,退出信号等。
优先级: 相对于其他进程的优先级。
程序计数器: 程序中即将被执行的下一条指令的地址。
内存指针: 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针
上下文数据: 进程执行时处理器的寄存器中的数据[休学例子,要加图CPU,寄存器]。
I/O状态信息: 包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。
记账信息: 可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等。
其他信息

3.2进程号PID

在当前操作系统中唯一标识一个进程。

ps aux:查看当前操作系统中的所有进程
在这里插入图片描述

ps aux | grep 文件名:查看某个进程

3.3进程状态

粗略划分

运行态:正在使用cpu资源进行运算的进程所持有的状态
就绪态:一切的准备资料都已准备就绪,等待操作系统分配cpu资源
阻塞态:等待某种资源到来之后才能进行运算
在这里插入图片描述

细微划分
n

R 运行状态

S 可中断睡眠状态
S后面的+表示前台进程,没有+表示后台进程,可以类比手机的应用比如你聊着微信你朋友叫你打游戏,你打开了王者荣耀,显示在当前主页面,此时王者荣耀就是前台进程,可你后台的微信还在运行,即为后台进程。
在这里插入图片描述

D 磁盘休眠状态,即不可中断睡眠状态,在这个状态的进程通常会等待IO的结束

T 暂停状态
ctrl z进入暂停状态,此时进程暂停但是并没有结束,要结束进程ctrl c。要恢复暂停之前的状态 fg暂停结束。
在这里插入图片描述

t 跟踪状态,当进程被gdb调试时,会产生t状态

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

Z 僵尸状态(重要,在后面单独介绍)

内存指针

保存了程序地址空间的首地址
在这里插入图片描述

进程切换

进行进程切换就是从正在运行的进程中收回处理器,然后再使待运行进程来占用处理器。 这里所说的从某个进程收回处理器,实质上就是把进程存放在处理器的寄存器中的中间数据找个地方存起来,从而把处理器的寄存器腾出来让其他进程使用。

程序计数器

保存了进程即将要执行的下一条汇编指令的地址。
在这里插入图片描述在这里插入图片描述ni nice值,查看执行信息
上下文信息
保存了程序运行时的寄存器中的内容
在这里插入图片描述
I/O信息
/proc/进程号/
cd fd
在这里插入图片描述

3.4fork创建子进程(重点)

复刻(英语:fork,又作派生、分支)是UNIX或类UNIX中的分叉函数,fork函数将运行着的程序分成2个(几乎)完全一样的进程,每个进程都启动一个从代码的同一位置开始执行的线程。这两个进程中的线程继续执行,就像是两个用户同时启动了该应用程序的两个副本。
从一个软件包拷贝了一份源代码然后在其上进行独立的开发,创建不同的软件。这个术语不只意味着版本控制上的分支,同时也意味着开发者社区的分割,是一种形式的分裂。

fork函数介绍

pid_t fork( void);
fork系统调用用于创建一个新进程,称为子进程,它与进程(称为系统调用fork的进程)同时运行,此进程称为父进程。创建新的子进程后,两个进程将执行fork()系统调用之后的下一条指令。子进程使用相同的pc(程序计数器),相同的CPU寄存器,在父进程中使用的相同打开文件。
它不需要参数并返回一个整数值。下面是fork()返回的不同值。
负值:创建子进程失败。
零:返回到新创建的子进程PID。
正值:返回父进程PPID或调用者。该值包含新创建的子进程的进程ID
本质是在不同的进程各返回一次,一次父进程一次子进程总返回两次。

最后的话

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

资料预览

给大家整理的视频资料:

给大家整理的电子书资料:

如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

zAjnve-1715533140338)]

给大家整理的电子书资料:

[外链图片转存中…(img-kiLQspuz-1715533140339)]

如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值