计算机与操作系统简述
计算机
计算机五大基本单元组成:控制器、运算器、存储器单元、输入单元、输出单元。
操作系统
OS,控制和管理计算机系统中的硬件和软件资源,用于用户与系统硬件之间传递信息。
- 管理计算机资源:处理器管理,存储器管理,设备管理,文件管理
- 提供用户接口:命令接口,图形用户接口,程序接口
操作系统启动流程(两种方式)
- power up --> BIOS --> BIOS自检 --> bootloader --> OS
- power up --> UEFI --> bootloader --> OS
Linux基础
Linux系统
Linux系统:内核,shell(命令解释器),文件系统,应用程序。
查看Linux版本信息
# 方法1
uname -a
# 方法2
cat /proc/version
进程
- 内核:硬件与软件之间的中间层,是一个资源管理程序,它提供一组面向系统的命令。
- 进程:正在执行的一个程序或命令,有自己的地址空间,占用一定的系统资源,一个CPU核同一时间只能运行一个进程。进程由它的进程ID(PID)和它的父进程ID(PPID)唯一识别。
进程管理
# 查看启动的nginx进程
ps -ef | grep nginx
# 查看某个进程
top -p 93824
# 关闭指定的程序
kill 93824
# 全部进程动态范围实时视图
top
进程调度
进程调度是操作系统按照某种策略或者规则选择进程占用CPU进行运行的过程。
进程状态:
- R (TASK_RUNNING) 可执行状态:只有在该状态的进程才可能在CPU上运行。
- S (TASK_INTERRUPTIBLE) 可中断的睡眠状态:处于这个状态的进程因等待某某事件的发生而被挂起。
- D (TASK_UNINTERRUPTIBLE) 不可中断的睡眠状态:进程处于睡眠状态,不可中断是指进程不响应异步信号,而不是CPU不响应外部硬件的中断。
- T (TASK_STOPPED or TASK_TRACED) 暂停状态或跟踪状态:向进程发送一个SIGSTOP信号,它就会因响应该信号而进入TASK_STOPPED状态。向进程发送一个SIGCONT信号,可以让其从TASK_STOPPED状态恢复到TASK_RUNNING状态。当进程正在被跟踪(进程暂停下来等待跟踪它的进程对它进行操作)时,它处于TASK_TRACED状态。
- Z (TASK_DEAD - EXIT_ZOMBIE) 退出状态,进程成为僵尸进程:进程在退出的过程中,处于TASK_DEAD状态。该过程中,除了task_struct结构以及少数资源外,进程占有的所有资源将被回收,进程只剩下task_struct一个空壳,故称为僵尸。
- X (TASK_DEAD - EXIT_DEAD) 退出状态,进程即将被销毁:进程被置于EXIT_DEAD退出状态,这意味着接下来的代码立即就会将该进程彻底释放。EXIT_DEAD状态非常短暂,几乎不能通过ps命令捕捉到。
特点:
- 每个进程有近乎相同的执行时间
- 对于逻辑CPU而言,进程调度使用轮询的方式执行,当轮询完成则回到第一个进程反复
- 进程消耗时间和进程量成正比
文件系统
操作系统中负责管理持久数据的子系统,负责把用户的文件存到磁盘硬件中,持久化保存文件。
Linux中一切皆文件。
Linux文件系统采用树状的目录结构,最上层是/(根)目录
虚拟文件系统(VFS)
功能:对应用层提供一个标准的文件操作接口;对文件系统提供一个标准的文件接入接口
# df命令报告文件系统磁盘空间利用率
df -T
# mount命令用于挂载文件系统,不带任何参数运行,会打印包含文件系统类型在内的磁盘分区的信息
mount
# 查看文件夹下的内容
ls
# 创建文件夹
mkdir demo
# 移动文件夹到/home
mv demo /home
# 删除文件夹
rm -r demo
# 创建空文件夹
touch file.txt
# 复制文件
cp file.txt file_bak.txt
用户权限
用户账户
- 普通用户账户:在系统中进行普通作业
- 超级用户账户:在系统中对普通用户和整个系统进行管理
组账户
- 标准组:可以容纳多个用户
- 私有组:只有用户自己
# 查看当前登录用户信息
w
# 查看当前用户所属的组
groups
# 查看用户的uid信息
id xxxx
文件权限
三种权限:R(可读),W(可写),X(可执行)
对于文件来说,它有一个特定的所有者,也就是对该文件具有所有权的用户。 在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。 文件所有者以外的用户又可以分为文件所属组的同组用户和其他用户。 因此,Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。
#在根目录创建一个文件夹,查看当前用户拥有文件夹的权限
cd / && mkdir demo, && 1s -1d demo
#创建一个用户,并赋予可写操作
sudo useradd ceshi
#设置用户密码
sudo passwd ceshi
#切换 ceshi 用户登录
su ceshi
#进入 demo 文件夹
cd demo
#创建 index.js文件,提示无权限,需要给ceshi 用户demo 文件夹的权限
touch index.js
#demo 文件夹权限给 ceshi 用户
sudo chown -R ceshi:ceshi ./demo
#切换ceshi用户登录
su ceshi
#进入demo 文件夹
cd demo
#创建index.js文件成功
touch index.js