Linux 操作系统基础知识

1.操作系统总体介绍

•CPU: 就像人的大脑,主要负责相关事情的判断以及实际处理的机制。
查询指令: cat /proc/cpuinfo
•内存: 大脑中的记忆区块,将皮肤、眼睛等所收集到的信息记录起来的地方,以供CPU进行判断。查询指令: cat /proc/meminfo

物理内存
物理内存,就是我们将内存条插在主板内存槽上的内存条的容量的大小。看计算机配置的时候,主要看的就是这个物理内存
虚拟内存
Windows中运用了虚拟内存技术,即拿出一部分硬盘空间来充当内存使用,当内存占用完时,电脑就会自动调用硬盘来充当内存,以缓解内存的紧张。
关系:windows中虚拟内存和物理内存可能都会被使用,linux中,只有物理内存使用完了,才会使用虚拟内存
•硬盘: 大脑中的记忆区块,将重要的数据记录起来,以便未来再次使用这些数据。
查询指令: fdisk -l (需要root权限)

2.内存和硬盘的关系

具体命令后面会介绍

3.操作系统监控命令>单独写一份

 

•vmstat

•sar

•iostat

•top

•free

•uptime

•netstat

•ps

•strace

•lsof

4.如何分析操作系统

实际流程: 读数据》数据>硬盘》虚拟内存(swaP)》内存》cpu缓存》执行队列

分析方向,正好相反



4.各个部分常出现的漏洞

•CPU: 容易出现该类瓶颈的邮件服务器、动态web服务器
•内存: 容易出现该类瓶颈的打印服务器、数据库服务器、静态web服务器
•磁盘I/O: 频繁读写操作的项目
•网络带宽: 频繁大量上传下载项目

 

5.Linux本身的一些优化

1. 系统安装优化

 

当安装linux系统时,磁盘划分、 SWAP内存的分配都直接影响系统性能。对于虚拟内存SWAP的设定,现在已经没有了所谓虚拟内存是物理内存两倍的要求,但是根据经验,如果内存较小(物理内存小于4GB),一般设置SWAP交换分区大小为内存的2倍;如果物理内存大约4GB小于16GB,可以设置SWAP大小等于或者略小于物理内存即可;如果内存在16GB以上,原则上可以设置SWAP为0,但最好设置一定大小的SWAP

• 2. 内核参数优化

例如,如果系统部署的oracle数据库应用,那么就需要对系统共享内存段( kernel.shmmax, kenerl.shmmni, kernel.shmall)、

系统信号量( kernel.sem)、文件句柄( fs.file0max)等参数进行优化设置;如果部署的WEB应用,那么就需要根据web应用特性进行网络参数的优化,例如修改net.ipv4.ip_local_port_range、net.ipv4.tc_tw_reuse、 net.core.somaxconn等网络

内核参数

• 3. 文件系统优化

在linux下可选的文件系统有ext2,、 ext3、 xfs、 ReiserFS

linux标准文件系统是从VFS开始,然后ext、 ext2, ext2是linux上的标准文件系统, ext3是在ext2基础上增加日志形成的。从VFS到ext3,设计思想没有太大变化,都是早期UNIX家族基于超级块和inode的设计理念设计而成。XFS文件系统是SGI开发的一个高级日志文件系统,通过分布处理磁盘请求、定位数据、保持cache的一致性来提供对文件系统数据的低延迟、高带宽的访问,因此XFS极具伸缩性,非常健壮,具有优秀的日志记录功能、可扩展性强、快速写入等优点。ReiserFS在Hans Reiser领导下开发出来的一款高性能的日志文件系统,通过完全平衡树来管理数据,包括文件数据、文件名及日志支持等。与ext2、 ext3相比,最大的优点是访问性能和安全性大幅提升。具有高效、合理利用磁盘空间,先将的日志管理机制,特意的搜寻方式,海量磁盘存储等优点

 

5.重点知识

物理内存和虚拟内存

1.如何查看物理内存和虚拟内存?

 

Top  命令可以查看物理内存和虚拟内存的数值

2.Buffer

是硬盘控制器上的一块内存芯片,具有极快的存取速度,它是硬盘内部存储和外界接口之间的缓冲器。由于硬盘的内部数据传输速度和外界介面传输速度不同,缓存在其中起到一个缓冲的作用。缓存的大小与速度是直接关系到硬盘的传输速度的重要因素,能够大幅度地提高硬盘整体性能。

3.Cache
CPU缓存(Cache Memory)是位于CPU与内存之间的临时存储器,它的容量比内存小的多但是交换速度却比内存要快得多。缓存的出现主要是为了解决CPU运算速度与内存读写速度不匹配的矛盾,因为CPU运算速度要比内存读写速度快很多,这样会使CPU花费很长时间等待数据到来或把数据写入内存。在缓存中的数据是内存中的一小部分,但这一小部分是短时间内CPU即将访问的,当CPU调用大量数据时,就可避开内存直接从缓存中调用,从而加快读取速度

4.CPU中断

当CPU执行完一条现行指令时,如果外设向CPU发出中断请求,那么CPU在满足响应的情况下,将发出中断响应信号,与此同时关闭中断,表示CPU不在受理另外一个设备的中断。这时,CPU将寻找中断请求源是哪一个设备,并保存CPU自己的程序计数器(PC)的内容。然后,他将转移到处理该中断源的中断服务程序。CPU在保存现场信息,设备服务(如交换数据)以后,将恢复现场信息。在这些动作完成以后,开放中断,并返回到原来被中断的主程序的下一条指令。

5.上下文切换
上下文切换(Context Switch) 或者环境切换
多任务系统中,上下文切换是指CPU的控制权由运行任务转移到另外一个就绪任务时所发生的事件。
在操作系统中,CPU切换到另一个进程需要保存当前进程的状态并恢复另一个进程的状态:当前运行任务转为就绪(或者挂起、删除)状态,另一个被选定的就绪任务成为当前任务。上下文切换包括保存当前任务的运行环境,恢复将要运行任务的运行环境。
进程上下文用进程的PCB(进程控制块,也称为PCB,即任务控制块)表示,它包括进程状态,CPU寄存器的值等。
通常通过执行一个状态保存来保存CPU当前状态,然后执行一个状态恢复重新开始运行。
上下文切换会对性能造成负面影响。然而,一些上下文切换相对其他切换而言更加昂贵;其中一个更昂贵的上下文切换是跨核上下文切换(Cross-Core Context Switch)。一个线程可以运行在一个专用处理器上,也可以跨处理器。由单个处理器服务的线程都有处理器关联(Processor Affinity),这样会更加有效。在另一个处理器内核抢占和调度线程会引起缓存丢失,作为缓存丢失和过度上下文切换的结果要访问本地内存。总之,这称为“跨核上下文切换”。

 

6.进程和线程

进程概念  
  进程是表示资源分配的基本单位,又是调度运行的基本单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等。然后,把该进程放人进程的就绪队列。进程调度程序选中它,为它分配CPU以及其它有关资源,该进程才真正运行。所以,进程是系统中的并发执行的单位。

 线程概念  
  线程是进程中执行运算的最小单位,亦即执行处理机调度的基本单位。如果把进程理解为在逻辑上操作系统所完成的任务,那么线程表示完成该任务的许多可能的子任务之一

进程和线程的关系  
(1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。  (2)资源分配给进程,同一进程的所有线程共享该进程的所有资源。  
(3)处理机分给线程,即真正在处理机上运行的是线程。  
(4)线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。

 

注意:

 1.Linux是大小写敏感的系统,举个例子,Mozilla, MOZILLA, mOzilla和 mozilla是四个不同的命令(但是只有第四个mozilla是真正有效的命令)。还有,my_filE, my_file,和 my_FILE是三个不同的文件。用户的登录名和秘密也是大小写敏感的(这是因为UNIX系统和C语言的传统一向是大小写敏感所致)。 

2.文件名最多可以有256个字符,可以包含数字,点号”.”,下划线”_”,横杆”-”,加上其他一些不被建议使用的字符。 

3.文件名前面带”.”的文件在输入”ls”或者”dir” 命令时一般不显示。可以把这些文件看作是隐含文件,当然你也可以使用命令”ls –a”来显示这些文件。 

4.“/”对等于DOS下的”\”(根目录,意味着所有其他目录的父目录,或者是在目录之间和目录和文件之间的一个间隔符号)。举个例子,cd /usr/doc。 

5.在Linux系统下,所有的目录显示在单一目录树下(有别于DOS系统的驱动器标识)。这意味着所有的物理设备上的所有文件和目录都合并在单一的目录树下。 

6.在配置文件里,以#打头的行是注释行。在修改配置文件的时候尽量不要删除旧的设置――可以把原来的设置加上”#”变成注释行,总是在修改地方对应地加入一些关于修改的注释,你会发觉在以后的管理中获益多多。 

7.Linux是继承性的多用户操作系统。你的个人设定(和其他用户的个人设定)放在你的主目录下(一般是/home/your_user_login_name)。许多的配置文件的文件名都以”.”开头,这样用户一般看不到这些文件。 

8.整个系统范围的设定一般放在目录/etc下。 

9.和其他的多用户操作系统类似,在Linux下,文件和目录有自己的拥有者和访问权限。一般来说,你只被允许文件到你的主目录下(/home/your_user_login_name)。学习一些关于文件权限管理的相关知识,否则你肯定会觉得Linux实在很麻烦。 

10.命令参数选项一般由”-”引导,后面跟一个字符(或者”--“,当选项超过一个字符时)。这样,”-”有点象DOS下的”/”。举个例子,输入命令 rm --help。

 

.Linux系统由哪几部分组成?Linux内核处于什么位置?
A:

1)Linux系统由四个部分组成:用户进程,系统调用接口、Linux内核子系统和硬件;
2)Linux内核处于用户进程和硬件之间,包括系统调用接口和Linux内核子系统。


 
Q3.Linux内核由哪几部分组成?各个子系统的主要功能是什么?
A:

(1)Linux内核除系统调用外,由五个主要的子系统组成:进程调度、内存管理、虚拟文件系统、网络和进程间通信(IPC);
(2)各个子系统的主要功能为:
1)进程调度:它控制着进程对CPU的访问,当需要选择一个进程开始运行时,由调度程序选择最应该运行的进程;
2)内存管理:它允许多个进程安全地共享主内存区域,支持虚拟内存;从逻辑上可以分为硬件无关的部分和硬件相关的部分;
3)虚拟文件系统(VFS):它隐藏了各种不同硬件的具体细节,为所有设备提供统一的接口,支持多达数十种不同的文件系统,分为逻辑文件系统和设备驱动程序;
4)网络:它提供了对各种网络标准协议的存取和各种网络硬件的支持,分为网络协议和网络驱动程序两部分;
5)进程间通信:支持进程间各种通信机制,包括共享内存、消息队列和管道等。



内存寻址
Q1.什么是物理地址?什么是虚地址?什么是线性地址?
A:

1)将主板上的物理内存条所提供的内存空间定义为物理内存空间,其中每个内存单元的实际地址就是物理地址;
2)将应用程序员看到的内存空间定义为虚拟地址空间(或地址空间),其中的地址就叫做虚拟地址(或虚地址),一般用“段:偏移量”的形式来描述,如A815:CF2D;
3)线性地址空间是指一段连续的、不分段的、范围为0~4GB的地址空间,一个线性地址就是线性地址空间的一个绝对地址。


 
Q2.在保护模式下,MMU如何把一个虚地址转换为物理地址?
A:

在保护模式下,内存管理单元(MMU)由一个或一组芯片组成,其功能是指虚拟地址映射为物理地址,即进行地址转换;MMU是一种硬件电路,它包含分段部件和分页部件两个部件,分别叫做分段机制和分页机制,分段机制是把一个虚拟地址转换为线性地址,分页机制是把一个线性地址转换为物理地址。

.Linux内核的状态有哪些?
A:

1)Linux最基本的进程状态有三种:运行态、就绪态和阻塞态(或等待态);这三种状态之间有四种可能的转换关系:运行态->阻塞态、运行态->就绪态、就绪态->运行态和阻塞态->就绪态;
2)为了管理上的方便,将就绪态和运行态合并为一个状态—可运行态,再包括其它方面的一些改变,将进程状态划分为:可运行态、睡眠(或等待)态(分为深度睡眠态和浅度睡眠态)、暂停状态和僵死状态。

1.Linux目录树结构是怎样的?它与Windows的目录树结构有什么区别?为什么Linux的文件系统采用固定的目录形式?
A:

文件是一个抽象的概念,它是存放一切数据或信息的仓库;
1)Linux的目录树结构为:根目录(/)在上,其它的平行在下;
2)Windows操作系统也是采用树型结构,但其树型结构的根是磁盘分区的盘符,有几个分区就有几个树型结构,它们之间的关系式并列的;而在Linux中,无论操作系统管理几个磁盘分区,这样的目录树只有一个;
3)这样做的原因是:Linux是一个多用户系统,制定这样一个固定的目录规划有助于对系统文件和不同的用户文件进行统一管理;
4)Linux中的文件类型包括:常规文件、目录文件、设备文件、管道文件和链接文件。

转载于:https://www.cnblogs.com/klb561/p/8830842.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/452023.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Transaction 那点事儿,Spring事务管理

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 Transaction 也就是所谓的事务了,通俗理解就是一件事情。从小,父母就教育我们,做事情要有始有终&…

网络爬虫--12.【XPath实战】获取百度贴吧中的图片

用XPath来做一个简单的爬虫,我们尝试爬取某个贴吧里的所有帖子,并且将该这个帖子里每个楼层发布的图片下载到本地。 #codingutf-8 import requests from lxml import etree import jsonclass Tieba:def __init__(self,tieba_name):self.tieba_name tie…

合并分ER图产生的冲突

合并分E-R图 各个局部应用所面向的问题不同,各个子系统的E-R图之间必定会存在许多不一致的地方,称之为冲突。 子系统E-R图之间的冲突主要有三类: ①属性冲突 ②命名冲突 ③结构冲突①属性冲突 属性域冲突,即属性值的类型、取值范围…

8.类定义、属性、初始化和析构

类定义 类 是一个独立存放变量(属性/方法)的空间 封装: 类可以把各种对象组织在一起,作为类的属性,通过 . (点)运算符来调用类中封装好的对象 属性: 变量在类中称为属性,但是类中的属性不仅仅只包含变量&#x…

GPL以及Copyleft协议使用率下降明显

根据最新的协议数据分析,不光是GPL,另外一些copyleft(AGPL,LGPL 等等)协议的使用率在不断下降,并且下降的速度越来越快。 这结果是在意料之中的,因为GPL非常的复杂。越来越多的个人和企业将选择…

概念模型和关系模型

ER模型(逻辑模型) ER模型的基本元素是:实体、联系和属性 实体:是一个数据对象,指应用中可以区别的客观存在的事物。(ER模型中的实体往往是指实体集) 实体集:指同一类实体构成的集合…

iOS AutoLayout使用技巧

关于ContentCompressionResistance, ContentHugging运用 如下图效果图,两个Label并列在同一排上,左边label自适应,右边label(红色)要使得内容全部展示,如果左边label内容很少,那么右…

网络爬虫--13.数据提取之JSON与JsonPATH

文章目录一. 前言二. JSON三. json.loads()四. json.dumps()五. json.dump()六. json.load()七. JsonPath八. JsonPath与XPath语法对比九. 案例分析一. 前言 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写。同时…

vs2017生成sqlserver 2017项目出现.Net SqlClient Data Provider: Msg 10343

一、使用vs2017生成sqlserver 2017项目时由于添加的程序集(CLR集成,可以参考后面给出的链接进行理解) ,由于安全权限的配置不正确引发以下的问题: SQL72014: .Net SqlClient Data Provider: Msg 10343, Level 14, State 1, Line 1 针对带有 SAFE 或 EXT…

数据库系统常用的存取方法

1. B树索引存取方法 2. Hash索引存取方法 3. 聚簇存取方法

创建型模式二:工厂方法模式

1. 工厂模式介绍 工厂模式(Factory Pattern)的意义就跟它的名字一样,在面向对象程序设计中,工厂通常是一个用来创建其他对象的对象。工厂模式根据不同的参数来实现不同的分配方案和创建对象。 在工厂模式中,我们在创建…

spring 的4种事务管理(1种编程式+3种声明式)

见:http://blog.csdn.net/sinat_25926481/article/details/48208619 Spring的4种事务管理(1种编程式事务三种声明事务) 一、Spring事务的介绍 二、编程式事务xml的配置 注入后直接在service层调用模板的方法使用 三、基于AOP方式的声明式事务…

如何创造出更优秀的用户体验?

对于互联网公司来说,用户体验起到至关重要的作用,能否给用户留下深刻的印象;开发出的产品是否实用、易用?等等这些都是开发者必将思考的话题。当有用性一样的时候,大家的竞争重点就是易用性了,这就是互联网…

java并发编程实战-第三章-对象的共享

3.1可见性 首先我们需要知道的是,java的线程都有自己独立的缓存,线程之间进行共享变量的交互是通过自身和缓存和主存的交互实现的。如果线程的每次更改缓存都刷入主存,主存每次被一个线程的缓存修改,都通知所有的线程刷新自身的缓…

GitHub(从安装到使用)

一、安装Git for Windows(又名msysgit) 下载地址: https://git-for-windows.github.io/ 在官方下载完后,安装到Windows Explorer integration的时候,将选项中将“Git Bash here”和“Git GUI here”打对勾。 然后就一直next直到Fi…

Spring事务配置的五种方式和spring里面事务的传播属性和事务隔离级别、不可重复读与幻读的区别

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 spring事务配置的五种方式 前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务配置虽说也配置过&#x…

Google编程之夏入围项目公布

Google编程之夏(Google Summer of Code),是由Google公司所主办的年度程式设计比赛,第一届从2005年开始。“Summer of Code”之名取自1967年的“夏日之爱”(Summer of Love)风潮。比赛的主要目的是鼓励学生参…

普通索引 唯一索引 主键索引 候选索引

普通索引 最基本的索引类型&#xff0c;没有唯一性之类的限制。普通索引可以通过以下几种方式创建&#xff1a; 创建索引&#xff0c;例如CREATE INDEX <索引的名字> ON tablename (列的列表)&#xff1b; 修改表&#xff0c;例如ALTER TABLE tablename ADD INDEX [索引…

Android 基于注解IOC组件化/模块化的架构实践

当前参与的项目历史也很久远&#xff0c;第一行代码据说是写于2014年的某一天&#xff0c;那时Android用的ide还是Eclipse、那时Android还没有很好的架构指导&#xff08;mvp、mvvm&#xff09;、那时Android最新的版本是5.0、那时Android的Material Design还没流行……背景随着…

网络爬虫--14.【糗事百科实战】

文章目录一. 要求二. 参考代码一. 要求 爬取糗事百科段子&#xff0c;假设页面的URL是 http://www.qiushibaike.com/8hr/page/1 使用requests获取页面信息&#xff0c;用XPath / re 做数据提取 获取每个帖子里的用户头像链接、用户姓名、段子内容、点赞次数和评论次数 保存到…