Linux操作系统复习
Linux操作系统复习
- 一. Linux的权限和shell原理
- 1. Linux从广义上讲是什么 从狭义上讲是什么?
- 2. shell是什么?
- 3. 为什么要设置一个shell外壳而不是直接和linux 内核沟通
- 4. shell的原理是什么
- 5. Linux中权限的概念
- 6. 如何提升当前操作的权限
- 7. 文件访问者的分类
- 8. 文件的权限有哪三种
- 9. 敲出ll指令之后会有哪些字符 分别是什么样子
- 10. 如何修改文件的权限
- 11. 如何修改文件的拥有者
- 12. 如何修改文件的所属组
- 13. 文件掩码是什么 如何修改文件的掩码
- 14. 目录的权限可以对应下面的哪些内容
- 15. 用户有目录的可写权限会发生什么问题 如何解决
- 16. 介绍下缓冲区的概念
- 二. 冯诺依曼体系
- 1. 画出简单的冯诺依曼体系图
- 2. 证明冯诺依曼体系的合理性
- 3. 内存提高性能的原理
- 4. 冯诺依曼体系之间的交流
- 三. 认识操作系统
- 1. 操作系统是什么
- 2. 为什么要设计操作系统
- 3. 操作系统的上下有什么
- 4. 操作系统如何进行管理
- 四. 进程概念
- 1. 什么是进程
- 2. 进程和程序有什么区别
一. Linux的权限和shell原理
Linux的权限和shell原理
1. Linux从广义上讲是什么 从狭义上讲是什么?
Linux从广义上讲是一个操作系统 从狭义上将是内核
许多厂商在这个内核的基础上推出了linux的发行版 比如说centos kai等
2. shell是什么?
shell的翻译是外壳 我们一般认为它是命令行解释器
3. 为什么要设置一个shell外壳而不是直接和linux 内核沟通
对用户来讲 因为用户不擅长和linux内核沟通 所以说使用shell来帮助用户
对于内核来讲 保护内核
4. shell的原理是什么
shell是对于所有外壳程序的统称 在centos中这个外壳程序是 bash
他们之间的关系就像程序员和你一样 是对一个抽象概念的实例化
5. Linux中权限的概念
权限要对应到用户上才有意义
Linux中有两种用户 一种是root 一种是普通用户
root用户几乎可以做任何事情
而普通用户则可以再Linux系统下做有限的事情
能做和不能做之间 这就叫权限
6. 如何提升当前操作的权限
我们可以使用sudo来提升当前用户的权限
sudo操作需要添加信任名单 这个名单在 /etc/sudoers 中
7. 文件访问者的分类
访问者的分类有三种
所有者 所属组 其他人
8. 文件的权限有哪三种
文件的权限有
是否可读 是否可写 是否可执行
9. 敲出ll指令之后会有哪些字符 分别是什么样子
文件符号 + 三个rwx 读写执行权限 一二三分别对应创建者 所属组 其他
10. 如何修改文件的权限
我们可以使用chmod指令来修改文件的权限
比如说 chmod + 777 (所有身份开启读写执行权限)
11. 如何修改文件的拥有者
我们可以使用chown 来改变文件的拥有者 但是这里要注意的是 必须要使用root身份
12. 如何修改文件的所属组
我们可以使用chgrp 来改变文件的所属组 但是这里要注意的是 必须要使用root身份
13. 文件掩码是什么 如何修改文件的掩码
文件掩码是来决定新建文件/目录的默认权限的一串数字
我们假设默认权限是mask 掩码是umask 那么最后的文件的权限是 mask & (~umask)
14. 目录的权限可以对应下面的哪些内容
如果没有目录的可读权限我们就无法通过ls查看目录里面的内容
如果没有目录的可写权限 我们就无法通过一系列指令在文件中创建或删除文件
如果没有目录的执行权限 我们就无法进入这个目录
15. 用户有目录的可写权限会发生什么问题 如何解决
用户只要有目录的可写权限就可以删除目录内文件 即时它没有文件的可写权限
此时我们可以利用 chmod + t 这样子即使有目录的写权限也无法删除了
不过要注意的是 只是影响删除 不影响创建文件
16. 介绍下缓冲区的概念
我们打印一些数据得到时候 不会立即刷新 而是会按照一定的规则来刷新 就比如说显示器就是行刷新 如果我们不打印换行符 它就不会立即刷新
二. 冯诺依曼体系
参考博客
冯诺依曼体系
1. 画出简单的冯诺依曼体系图
2. 证明冯诺依曼体系的合理性
首先我们创造计算机出来肯定要有输入和输出设备
我们输入数据之后肯定要有组件来处理数据吧 这个时候就引出了运算器的存在
而此时这三个单元是孤立存在的 所以说我们需要控制器去控制整个流程
是我们知道 cpu的运算能力是非常快的 而我们的输入输出则是非常慢的
这里就会引出一个矛盾 如果让输入输出设备和cpu直接连接的话效率就会变得非常低
于是我们后面想到了在输入和输出设备和cpu之间添加一个缓冲区 不让他们直接接触 这个缓冲区的效率一定要高于输入输出设备 它就是内存
加上了内存之后输入的数据直接写入到内存中 然后由内存与cpu沟通
经过了cpu的计算后再次写入内存中由内存写进输出设备
这样子就避免了cpu和输入输出设备的直接沟通 提高了效率
而此时的控制器会控制整个流程
3. 内存提高性能的原理
内存提高性能主要是因为局部性原理
局部性原理是指CPU访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中
内存首先是一个存储设备 它肯定有存储数据的能力 它可以再cpu处理一行的数据的时候将下面几行的数据预加载到高速缓存中 而下面的几行数据就是大概率要被使用的
而cpu能够同时处理数据和加载数据 这样子cpu就可以直接从内存中读取数据了
这就是内存能提高性能的原因
4. 冯诺依曼体系之间的交流
以IM通讯为例 数据首先由键盘进行输入到内存中 cpu从内存中读取数据 处理完毕之后返回内存中 网卡读取内存中的数据发送到
网卡读取到数据 加载到内存中 由cpu进行获取之后处理数据 最后返回内存中 之后显示到显示器上
三. 认识操作系统
1. 操作系统是什么
操作系统是管理软硬件资源的软件
2. 为什么要设计操作系统
我们想一下 如果没有操作系统的话我们是不是要直接去操作计算机硬件了 而直接操作计算机硬件是不是对我们来说难度太高了
同样的对于计算机硬件来说 如果让用户直接操作可能会对硬件造成破坏
- 统筹硬件资源
- 为用户提供一个良好的操作环境
3. 操作系统的上下有什么
这里可以从整个操作系统的发展开始讲 首先是硬件层
然后直接有硬件是不可以的 我们肯定还需要有操作系统去统筹这些资源
但是操作系统能够直接和硬件打交道嘛? 显然是不可以的 不然必须要我要换一块键盘就要重写一部分操作系统嘛
所以说 操作系统和硬件中间要加一块驱动层 驱动由各个硬件厂商开发 操作系统只提供接口就可以
之后再上面就是用户了
但是操作系统肯定是不能直接暴露给用户的 操作系统会暴露出一些接口
但是这些接口对于普通人来说又太难了 所以说又有开发者开发了一些用户调用接口
4. 操作系统如何进行管理
先描述 再组织
先描述 再组织这句话贯穿整个linux操作系统的学习
管理分两步走 首先描述被管理对象的各种属性将其数据化 之后使用数据结构将这些数据组织起来
因为我们想要管理一个对象肯定不可能去了解他的全部 肯定要量化这些数据才能进行管理
我们如果只是管理一个对象的话 那么可以不去组织嘛 但是一般都是管理很多个对象吗 所以说要用数据结构把他们组织起来
四. 进程概念
1. 什么是进程
进程是操作系统进行资源分配的最小单位 一个进程就是一个程序执行一次的过程
2. 进程和程序有什么区别
我们能看到 程序以文件的格式保存在磁盘中 之后双击运行 被加载到内存中
被加载到内存后我们会发现除了原本的代码之外还多了一堆的数据
根据管理的原则 先描述 再组织 这些实际上就是os对于这段代码的描述 就是PCB
所以说 进程等于程序加上PCB