操作系统
文章
附录7 模式切换与进程切换
进程切换与模式切换1 模式切换模式切换的概念 进程执行过程中,由于内中断(包括系统调用和异常)引发的时间处理程序,从用户模式切换到内核模式。不需要进程的切换。 内核模式处理完成后,返回用户模式下中断处,继续执行任务。 模式切换的类别 进程切换必须在操作系统内核模式下完成,这就需要模式切换 用户模式到内核模式:由中断/异常/系统调用,中断用户进程执行而触发 内核模式到用户模式:OS执行中断返回指令将控制权交还用户进程而触发 模式切换的处理流程: (中断/异常触发)正向模式切换压入PSW/PC 保存被中断进程的现场信息 处理中断/异常 恢复被中断进程的现场信息 (中断返回指令触发)逆向模式转换弹出PSW/PC 模式切换的基本工作任务 中断装置完成正向模式切换,包括: 处理器模式转为内核模式 保存当前进程的PC/PSW值到核心栈 转向中断/异常/系统调用处理程序 中断返回指令完成逆向模式转换,包括: 从待运行进程核心栈中弹出PSW/PC值 处理器模式转为用户模式 2 ...
附录8 同步异步、阻塞非阻塞
同步异步、阻塞非阻塞、网络编程与并行编程 参考文献 https://www.zhihu.com/question/19732473/answer/14413599 https://www.cnblogs.com/shiysin/articles/10689761.html https://blog.csdn.net/jolin678/article/details/49611587 https://blog.csdn.net/qq_40989769/article/details/110481553 0 问题概述背后的思想 我觉得,同步异步,更像是思想,是一种哲学思想,而不是某种具体的技术或者方案,它在不同的环节,能够表现出不同的形式。 我觉得,在这个问题上,我过度思考了,太想把这两个次应用到不同的领域,因为在不同的领域都见过。通信就是通信,有很多种通信方式和机制。设备IO就是设备IO也有很多不同的实现方案,没有必要非得对应到同步和异步上。像,通信,就那几种机制,直到就行,干嘛非得划分为同步通信或者异步通信? 不应该以同步和异步来划分领域,而应...
附录9 网络编程和web开发
1 web开发web框架用来进行web开发的前端后端脚本的框架,包括大量集成的方法,通过框架接口进行调用。包括spring spring boot 等框架。 web服务器(web容器)web开发的网络通信模块,在Java中,以web容器Tomcat,jetty等。使用网络编程封装了http网络通信模块,解析http的请求并发送http的请求。Web服务器的种类有:1、Apache 2、IIS 3、Nginx 4、Tomcat 5、Lighttpd 6、Zeus等。 web开发主要是指利用web框架,在web容器的基础上,快速搭建web应用。 2 网络编程利用操作系统提供的网络通信模块,实现通信。包括socket通信,tcp/ip udp通信等。Java socket 模块和netty框架。 3 C++C++网络编程对于C++ 来说,主流的网络编程框架是linux/unix和Windows提供的网络通信接口。跨平台的是boost提供的asio网络编程框架。用来实现各种形式的网络通信。 C++web开发对于C++来说,很少实现web服务器...
附录10 动态内存的原理
动态内存管理 参考文献 SLBA的原理和使用 SLBA教程 1 SLBA分配器概念在linux内核中伙伴系统用来管理物理内存,其分配的单位是页,但是向用户程序一样,内核也需要动态分配内存,而伙伴系统分配的粒度又太大。 由于内核无法借助标准的C库,因而需要别的手段来实现内核中动态内存的分配管理,linux采用的是slab分配器。 slab分配器不仅可以提供动态内存的管理功能,而且可以作为经常分配并释放的内存的缓存。通过slab缓存,内核能够储备一些对象,供后续使用。需要注意的是slab分配器只管理内核的常规地址空间(准确的说是直接被映射到内核地址空间的那部分内存包括 ZONE_NORMAL和ZONE_DMA )。 优点采用了slab分配器后,在释放内存时,slab分配器将释放的内存块保存在一个列表中,而不是返回给伙伴系统。在下一次内核申请同样类型的对象时,会使用该列表中的内存开。slab分配器分配的优点: 可以提供小块内存的分配支持 不必每次申请释放都和伙伴系统打交道,提供了分配释放效率 如果在slab缓存的话,其在CPU高速缓存的概率也会较高。 伙伴系统的操作队系统的数据...
附录12 并发编程
并发编程1 并发概述 并发一般应用在高性能服务器上,用来响应多个客户端的并发访问。但是在客户端也会用到并发的方法,如某些耗时长的文件读取(并发读取,不会阻塞用户进程)、点对点通信(并发通信不会阻塞用户界面)、ajax异步通信(并发获取服务器上的数据,不会阻塞界面)等。 问题重述 什么是并发, 并发编程的应用场景。并发编程与网络编程的关系,并发编程与进程同步、进程通信、设备IO的关系,并发与并行的关系,并发与同步异步的关系 并发编程的核心问题(并发机制、并发同步、并发通信) 并发编程的具体实例(在各种系统和场景下的表现) 并发概念并发和独占对应。 在程序设计的角度,希望通过某些机制让计算机可以在一个时间段内,执行多个任务。 一个或多个物理 CPU 在多个程序之间多路复用,提高对计算机资源的利用率。 任务数多余 CPU 的核数,通过操作系统的任务调度算法,实现多个任务一起执行。 有多个线程在执行,计算机只有一个 CPU,不可能真正同时运行多个线程,操作系统只能把 CPU 运行时间划分成若干个时间段,再将时间段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状。...
附录13 网络编程
网络编程网络编程概述问题重述 什么是网络编程,解决了那些问题? 网络编程与同步异步、阻塞非阻塞的关系 网络编程的核心机制 网络编程的具体实现 什么是网络编程 既是进程线程通信的一部分 也是设备IO(network IO)的一部分。 当然也是独立的一部分。 解决了两个客户端的通信问题 网络编程与同步异步的关系 没有绝对关系,只是在其中一两个步骤中用到了同步思想或者异步思想。无法用同步异步的方式或者阻塞非阻塞的方式,来区分网络编程的类型。 网络编程的核心机制 这里简单介绍一下网络编程通用的核心的原理和模型。 数据交换和通信方式 socket编程 消息队列模式 网络编程的具体实现 每个场景每种语言都有自己的具体实现方案。可以对应到笔记中的其他模块了解网络编程的具体实现。 Linux 网络编程 C++网络编程库 Java网络编程 Python网络编程 Go网络编程 原理和模型阻塞模式 普通的socket编程,连接建立过程是阻塞的、读写过程也是阻塞的。 阻塞模式:比如调用send时,把要发送的数据放到网络发送缓冲区才返回。如果这时,网络发送缓冲区满了,则需要等待更久的...
面试问题整理
操作系统的基本特征1 进程的三态模型、五态模型、七态模型 创建 就绪 执行 阻塞 终止 静止就绪 静止阻塞 2 进程同步的原则与操作 同步的原因两种制约关系 直接制约关系 简介制约关系 同步的四大原则 空闲让进 忙着等待 有限等待 让权等待 同步的实现方式 3 进程通信的方式 基础进程通信机制 条件变量、信号量、管程 共享内存通信机制 通过信号量控制共享内存。 消息传递通信机制 IPC消息队列 管道文件通信机制(文件进程通信机制) PIPE管道 FIFO命名管道 网络进程通信机制 socket 4 同步异步、阻塞非阻塞:定义及实现 同步通信 异步通信 阻塞通信 非阻塞通信 5 进程与线程的关系 进程:资源分配的基本单位 线程:系统调用的基本单位 6 处理机调度算法 作业调度算法 FIFS SJB 优先权调度 时间片轮转 分级调度 彩票调度 进程调度算法 FIFS SJB SRTN 优先权调度 时间片轮转 分级调度 实时调度 最低松弛优先 最早截止优先 7 死锁的原因和解决 原因 互斥资源 占有等待 循环等待 不可抢占 方...
Readme
操作系统 0 概述 1 操作系统引论 2 进程管理 2.1 进程的基本概念 2.2 进程控制 2.3 进程同步 2.4 进程通信 2.5 进程与线程 2.6 协程 3 处理机管理 4 内存管理 4.1 层次结构与装入链接 4.2 连续存储管理 4.3 分页存储管理 4.4 分段存储管理 4.5 虚拟存储器 5 设备IO管理 5.1 Linux IO模型 5.2 Windows IO模型 5.3 IO多路复用模型 5.4 IO多路复用与线程进程 5.5 IO多路复用与回调函数 6 文件系统 7 操作系统接口 附录1 课后习题答案 附录10 动态内存的原理 附录12 并发编程 附录13 网络编程 附录2 操作系统总结 附录3 互斥量、信号量、条件变量 附录4 寄存器 附录5 协程 附录6 中断 附录7 模式切换与进程切换 附录8 同步异步、阻塞非阻塞 附录9 网络编程和web开发 面试问题整理












