logo头像
Snippet 博客主题

操作系统

操作系统

Phase 1 导论

什么是操作系统?


在各种各样的电子产品中,我们主要学习以及了解的是Computer System

Computer System由三大部分构成:

  • Hard Ware 硬件
  • Soft Ware 软件
  • Data 数据

image-20220220151246589

抽象的理解起来,操作系统充当着硬件与软件之间的桥梁

操作系统功能

  • 处理机管理
    • 进程控制
    • 进程同步
    • 进程通信
    • 调度
  • 存储器管理
    • 内存分配
    • 内存保护
    • 地址映射
    • 内存扩充
  • 设备管理
    • 缓冲管理
    • 设备分配
    • 设备管理
  • 文件管理
    • 文件存储空间管理
    • 目录管理
    • 文件读写管理和保护
  • 用户接口
    • 用户接口
    • 程序接口
  • 现代OS功能
    • 系统安全
    • 网络功能以及服务
    • 多媒体支持

image-20220220152038031

定义操作系统

image-20220220152431199

计算机系统组成


image-20220221102408447

磁盘结构

image-20220221104232136

磁盘扇区

image-20220221104728931

操作系统的启动

大致为BOOTSTRAP模式,即OS自己把自己启动

image-20220221105215574

中断机制

  • 当有事件(Event)发生时,CPU会收到一个中断(Interrupt)信号,可以是硬中断也可以是软件中断
  • CPU会停下正在做的事,转而执行中断处理程序,执行完毕会回到之前被中断的地方继续执行
  • Operating System is an INTERRUPT driven system.

存储层次图

image-20220221153830234

I/O结构

  • IO设备时计算机体系结构中种类最丰富的设备类型,而且他有着很强的扩展性
  • 管理IO设备时操作系统非常重要的组成部分,操作系统中有一个专门的IO子系统负责完成这项工作

计算机系统体系结构


单处理器系统

  • Single-processor System
  • 只有一颗主CPU,执行通用指令集
  • 带有其他专用处理器,为特定设备服务如磁盘键盘图形控制器等
    • 它们能够执行的指令有限,不处理用户进程
    • 操作系统会向他们发出任务,并监控它们的状态

操作系统结构


操作系统的完成模式:单用户单道模式

多道程序设计

  • 操作系统最重要的一点是具有多道程序(multiprogramming)能力
  • 单道程序不能让CPU和IO设备始终忙碌,多道程序设计通过安排任务使用得CPU总有一个执行任务,从而提高CPU利用率
  • 实现的硬件保证:处理器和IO设备具备并行工作的能力

分时系统

  • 分时系统(time sharing)也称多任务系统,是多道程序设计的自然延伸
  • 允许多个用户共享一台计算机
    • 用户只有输入和输出设备
    • 分时系统为每个用户轮流分配等量的CPU空间
    • 用户从发出指令到得到即时结果的时间称为响应时间
  • 第一个分时系统CTSS由MIT(麻省理工大学)于1962年开发出来

引发的其他设计模式

  • 处理器调度(CPU Scheduling)
  • 交换(Swapping)
  • 虚拟内存(Virtual Memory)
  • 磁盘管理(Disk Management)
  • 同步(Synchronization)
  • 死锁(Deadlock)

Phase 2 Linux系统


操作系统的服务


操作系统提供哪些服务?

为普通用户

  • GUI 图形化用户接口
  • batch 批处理系统
  • command line 命令行接口

User Interface

  • 几乎所有的操作系统都具有其用户接口(User Interface)即UI,为用户提供与操作系统交互的方式
    • CLI(Command LIne Interface) 命令行接口
      • command interpreter(shell) 命令解释器
    • GUI(Graphic User Interface) 图形化用户界面
      • A user friendly graphical user interface 对用户友好的交互界面
    • Batch
      • It is a file which contains commands and directives 实质上Batch就是一个文件,包含了各种 命令和指示
      • Demonstration

为开发者

  • program execution 程序执行
  • I/O operations IO设备交互管理
  • file systems 文件系统
  • communication 交流
  • resource allocation 资源分配
  • accounting 记录
  • error detection 错误检测
  • protection and security 安全与保护

系统调用(System Calls)

  • 系统调用提供了访问和使用操作系统所提供的服务的接口
    • 系统调用的实现代码是操作系统级的
    • 这个接口通常是面向开发者的
  • API(Application Programming Interface):指明了参数和返回值的一组函数
    • 应用程序App的开发人员通过API间接访问了系统调用

标准C程序image-20220223194107112

双重模式(DUAL MODE)

  • 现代计算机系统有一个特殊的硬件用于划分系统的运行状态,至少需要两种单独运行模式

    • 用户模式(user mode):执行用户代码
    • 内核模式(kernel mode):执行操作代码
  • 目的:确保操作系统正确运行

  • 实现方式

    用一个硬件模式位来表示当前模式:0表示内核模式,1表示用户模式

GNU/Linux


开源操作系统

  • Open-source,closed-source,hybrid operating system(开源,闭源,混合式)
  • source code and binary code

Phase 3 进程管理


在了解进程之前,我们有必要先了解一下在操作系统中,每一个程序所具有的特征,这里只讨论程序并发执行时的程序特征

  1. 间断性。程序在并发执行时,由于它们共享系统资源,以及为完成同一项任务而相互合作,致使在这些并发执行的程序之间形成了相互制约的关系,相互制约将导致并发程序具有”执行——暂停——执行”这种间断性的活动规律。
  2. 失去封闭性。当系统中存在着多个可以并发执行的程序时,系统中的各种资源将为它们所共享,而这些资源的状态也由这些程序来改变,致使其中任一程序在运行时,其环境都必然会受到其他程序的影响。
  3. 不可再现性。程序在并发执行时,由于失去了封闭性,也将导致其又失去可再现性。

进程的定义

​ 操作系统中,进程是无可避免的一环,不同于我们大脑中潜意识认为的程序,进程实际上是计算机中的程序关于某数据集合上的一次运行活动

Phase 4 内存管理

Phase 5 存储管理

Phase 6 IO系统

常用指令


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
(0) 进入homework_0文件夹,分别创建文件夹dir_a, dir_b, dir_c
mkdir dir_a dir_b dir_c

(1) 进入homework_1文件夹,将a.txt, b.txt, c.txt 分别复制成: a.txt.bak, b.txt.bak, c.txt.bak
cp a.txt a.txt.bak
cp b.txt b.txt.bak
cp c.txt c.txt.bak

(2) 进入homework_2文件夹,将a.txt, b.txt, c.txt 分别重命名为: a_new.txt, b_new.txt, c_new.txt
mv a.txt a_new.txt
mv b.txt b_new.txt
mv c.txt c_new.txt

(3) 进入homework_3文件夹,将dir_a文件夹下的a.txt, b.txt, c.txt分别移动到文件夹dir_b下
mv dir_a/* dir_b/

(4) 进入homework_4文件夹,将普通文件a.txt, b.txt, c.txt删除
rm a.txt b.txt c.txt

(5) 进入homework_5文件夹,将文件夹dir_a, dir_b, dir_c删除
rm dir_a -r
rm dir_b -r
rm dir_c -r

(6) 进入homework_6文件夹,查看task.txt的内容,并按其指示进行操作
cat task.txt
mkdir dir_a
mv done.txt dir_a

(7) 进入homework_7文件夹,创建文件夹dir_0, dir_1, dir_2,
将a.txt, b.txt, c.txt复制到dir_0下,重命名为a0.txt, b0.txt, c0.txt;
将a.txt, b.txt, c.txt复制到dir_1下,重命名为a1.txt, b1.txt, c1.txt;
将a.txt, b.txt, c.txt复制到dir_2下,重命名为a2.txt, b2.txt, c2.txt;

mkdir dir_0 dir_1 dir_2
cp a.txt dir_0/a0.txt
cp a.txt dir_1/a1.txt
cp a.txt dir_2/a2.txt
cp b.txt dir_0/b0.txt
cp b.txt dir_1/b1.txt
cp b.txt dir_2/b2.txt
cp c.txt dir_0/c0.txt
cp c.txt dir_1/c1.txt
cp c.txt dir_2/c2.txt

(8) 进入homework_8文件夹,分别在dir_a, dir_b, dir_c文件夹下查看task.txt的内容,并分别按照指示进行操作
cd homework_8
rm a.txt
mv b.txt b_new.txt
cp c.txt c.txt.bak


(9) 进入homework_9文件夹,将其中所有txt类型的文件删除
cd homework_9
rm *.txt

tmux和vim


学习之前,首先我们要知道tmux和vim是什么,在百度百科中,对它们的定义是这样的

tmux

tmux是一个优秀的终端复用软件,类似GNU Screen,但来自于OpenBSD,采用BSD授权。使用它最直观的好处就是,通过一个终端登录远程主机并运行tmux后,在其中可以开启多个控制台而无需再“浪费”多余的终端来连接这台远程主机;当然其功能远不止于此。

tmux比较重要的用途:1.分屏 2.脱离服务器运行进程

1
2
3
4
//复制
ctrl+insert
//粘贴
shift+insert

tmux指令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//指令基于ubuntu64位


tmux new -s session1;//新建会话,session1即是新会话名,也可以直接输入tmux
ctrl+d;//退出会话。回到shell环境
tmux ls;//终端中查看会话列表
ctrl+b s;//会话中查看会话列表,并且可以配合上下左右键展开和选择会话列表pane
tmux a -t session1;//从终端中进入已经创建的session1当中
tmux kill-session -t session1;//销毁会话,终端中和会话中都可以使用
tmux rename -t old_session_name new_session_name;//重命名会话(终端环境中)
ctrl+b $;//在会话环境中重命名当前打开的会话
ctrl+b c;//在当前窗口创建窗口,按ctrl+d删除当前窗口,后面有*号的窗口是当前窗口
ctrl+b p;//p为previous,切换到上一个窗口
ctrl+b n;//p为next,切换到下一窗口
ctrl+b [number];//切换到第number个窗口
ctrl+b w;//列出当前session所有window,通过上下键切换窗口
ctrl+b &;//关闭当前window

//tmux的pane
ctrl+b %;//分成左右两屏
ctrl+b ";//分成上下两屏
ctrl+b 方向键;//根据按键方向切换指定的pane
ctrl+b z;//全屏当前pane
ctrl+b x;//关闭当前使用中的pane

vim

Vim是从vi发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。

vim指令

1
2
//进入vim之后会有三种模式,分别是一般命令模式、编辑模式、命令行模式
vim filename;//打开文件