《操作系统》课程笔记(Ch01-导论)
Ch01 - 导论
操作系统的功能
- 用户视角:在乎使用方便,不在乎资源利用
- 系统视角:资源分配器、控制程序
计算机系统的运行
- 启动:利用固件(Firmware)中的引导程序(Bootstrap Program)
- 事件发生:通过软硬件的中断。软件触发中断的方式是系统调用
计算机系统的体系结构
单处理器系统
只有一个主CPU,以便执行一个通用指令集。
多处理器系统
对称多处理SMP:每个处理器都参与完成操作系统的所有任务,处理器之间没有主从关系。

寄存器之间不共享总线
非对称处理:每个处理器都有各自特定的任务。一个主处理器控制系统,调度从处理器。
集群系统
操作系统的结构
- 多道程序设计:通过安排使得CPU总有一个执行作业,以提高CPU利用率
- 分时系统(多任务):以很高的频率切换作业来执行多个作业
双重模式
操作系统要区分操作系统代码和用户代码的执行。至少分为两种模式:用户模式和内核模式。
实现:利用硬件的模式位来表示。
特权指令:可能引起损害的机器指令,只有在内核模式下才允许执行。

进程
执行的程序称为进程。进程是系统的工作单元,分为操作系统进程和用户进程。所有进程会并发执行。
保护与安全
- 保护:控制进程或用户访问计算机系统的资源(向内控制)
- 安全:防止系统不受外部或内部的攻击(向外控制)
常用的内核数据结构
- 列表:链表实现(单向链表、双向链表、循环链表)
- 堆栈
- 队列
- 树
- 哈希函数和哈希表
- bitmap
《操作系统》课程笔记(Ch01-导论)的更多相关文章
- Coursera课程笔记----计算导论与C语言基础----Week 6
理性认识C程序 导论(Week 6) 明确学习进度 讲课内容 感性➡️理性➡️函数➡️指针等 作业练习 初级阶段 ➡️正常作业练习 C语言的由来 程序设计语言的分类 低级语言之机器语言 0010101 ...
- Coursera课程笔记----计算导论与C语言基础----Week 2
计算机的历史与未来(Week 2) 计算机历史 早期计算机:手工计算器➡️机械计算器➡️计算机原型 现代计算机:电子管计算机➡️晶体管计算机➡️集成电路计算机➡️超大规模集成电路 早期的手工计算辅助工 ...
- Coursera课程笔记----计算导论与C语言基础----Week 12
期末编程测试(Week 12) Quiz1 判断闰年 #include <iostream> using namespace std; int main() { int year; cin ...
- Coursera课程笔记----计算导论与C语言基础----Week 11
C程序中的字符串(Week 11) 字符数组 所有的字符串,都是以\0结尾的 只能在数组定义并初始化的时候:char c[6] = "China"; 不能用赋值语句将一个字符串常量 ...
- Coursera课程笔记----计算导论与C语言基础----Week 10
C程序中的数组(Week 10) 一维数组 数组的定义 类型 数组名[常量表达式] int sheep[10] 定义数组时,[]内必须为常量表达式 可以用const int 可以在main函数前,#d ...
- Coursera课程笔记----计算导论与C语言基础----Week 9
C语言中的控制成分(Week 9) 计算机程序的基本结构 任何具有单入口单出口的程序,都可以用顺序结构.分支结构.循环结构来表达 分支语句 在执行if语句前,先对表达式求解 if()内可以是任意的数值 ...
- Coursera课程笔记----计算导论与C语言基础----Week 8
C语言中的运算成分(Week 8) 赋值运算符 "="赋值运算符 给赋值号左边的变量赋予数值 在变量定义的同时可以为变量赋初值 要点一:两面类型不同 若=两边的类型不一致,赋值时要 ...
- Coursera课程笔记----计算导论与C语言基础----Week 7
C语言中的数据成分(Week7) 内存 把内存想象成长带,带子上有许多方格,每个方格有8位(8bit) 2^10 = 1024 1B = 8 b 1KB = 1024Byte MB.GB.TB.PB- ...
- Coursera课程笔记----计算导论与C语言基础----Week 5
从现实问题到计算机程序(Week 5) 总结回顾 计算机只能按照程序去执行,不可能自己"想出"一个解决问题的方法 面对一个问题,你必须自己找到解决方案,才有可能做出相应的程序 所以 ...
- Coursera课程笔记----计算导论与C语言基础----Week 4
感性认识计算机程序(Week 4) 引入 编程序 = 给计算机设计好运行步骤 程序 = 人们用来告诉计算机应该做什么的东西 问题➡️该告诉计算机什么?用什么形式告诉? 如果要创造一门"程序设 ...
随机推荐
- CTR学习笔记&代码实现1-深度学习的前奏LR->FFM
CTR学习笔记系列的第一篇,总结在深度模型称王之前经典LR,FM, FFM模型,这些经典模型后续也作为组件用于各个深度模型.模型分别用自定义Keras Layer和estimator来实现,哈哈一个是 ...
- touch事件中的touches、targetTouches和changedTouches
touches: 当前屏幕上所有触摸点的列表; targetTouches: 当前对象上所有触摸点的列表; changedTouches: 涉及当前(引发)事件的触摸点的列表; 通过一个例子来区分一下 ...
- mysql锁机制和事务隔离
mysql事务 1.InnoDB事务原理 事务(Transaction)是数据库区别于文件系统的重要特性之一,事务会把数据库从一种一致性状态转换为另一种一致性状态. 在数据库提交时,可以确保要么所有修 ...
- Swift 4.0 字典(Dictionary)学习
定义字典常量(常量只有读操作) let dictionary1 = ["key1": 888, "key2": 999] let dictionary2: [S ...
- CF1324F Maximum White Subtree 题解
原题链接 简要题意: 给定一棵树,每个点有黑白两种颜色:对每个节点,求出包含当前节点的连通图,使得白点数与黑点数差最小.输出这些值. F题也这么简单,咳咳,要是我也熬夜打上那么一场...可惜没时间打啊 ...
- ThreadPoolTaskExecutor 中 corePoolSize vs. maxPoolSize
1. 概览 Spring中的 ThreadPoolTaskExecutor 是一个 JavaBean ,提供围绕java.util.concurrent.ThreadPoolExecutor 的抽象实 ...
- Magento2(麦进斗) docker 安装
Magento 介绍 Magento(麦进斗)是一套专业开源的电子商务系统,采用php进行开发,使用Zend Framework框架.Magento设计得非常灵活,具有模块化架构体系和丰富的功能.易于 ...
- Android LinearLayout线性布局详解
为了更好地管理Android应用的用户界面里的各组件,Android提供了布局管理器.通过使用布局管理器,Android应用图形用户界面具有良好的平台无关性.推荐使用布局管理器来管理组件的分布.大小, ...
- Python 聊天界面编写
import os from tkinter import * import time os.chdir('E:\\actdata') def main(): def sendMsg():#发送消息 ...
- Error response from daemon: rpc error: code = AlreadyExists desc = name conflicts with an existing object: service myweb already exists
主机环境 centos7.2 执行 docker service create --replicas 6 --name myweb -p 80:80 nginx:latest 时 报 Error re ...