linux操作系统运行学习总结
https://www.cnblogs.com/f-ck-need-u/p/10481466.html
操作系统学习总结
1、linux上面cpu通过上下文切换达到进程的不断切换,通过动态计算切换执行的时长叫时间片。
2、操作系统系统进程分为内核态和用户态进程
3、操作系统为了具备最高权限让用户进程不具备最高权限,cpu中提供了PSW的寄存器中保存了进程有关的控制器,其中分两种运行模式:内核模式和用户模式
4、中断用于打断cpu正常执行的流程,同时能保证cpu控制权交给操作系统。中断分为硬件中断和软件中断
5、系统调用:
发起系统调用,请求操作系统帮忙执行某些操作,这会产生软中断;
软中断导致陷入内核,CPU控制权交给操作系统,操作系统处理中断,即执行被请求的操作;
如果一切正常,操作系统在完成操作后会恢复到断点处继续向下执行,这会回到用户态;
用户进程取得操作系统操作的成果,继续向下执行。
6、cpu在空闲后执行操作系统上面的Idle的进程,该进程主要计算cpu的空闲时间
7、操作系统通过在物理内存上面分配一个地址空间来实现进程内存管理
管道:
管道是进程间通信方式。没创建一个管道,就有两个文件描述符,一个是负责读管道的,一个是负责写管道的。使用管道通信时,就是两个文件描述符加一段内核空间中的内存
管道分为匿名管道和命名管道
信号量:
1、如果一个进程操作P操作(减1操作,即请求一个信号灯),如果减去之后信号量的数值为负数,则该进程被阻塞,如果减去之后为0或正数,则放行该进程
2、如果一个进程请求V操作(加1操作,即释放或增加一个信号灯),进程直接放行
3、如果请求V操作,如果加1之后仍为0或负数,则方向该进程的同时还唤醒另一个被阻塞的进程。如果加1后为正数,则直接添加一个信号等资源
总结:
最简单的信号量当然是初始时只适用1个信号灯,从而实现互诉锁(也成为互诉量)机制:P是申请锁操作,只有在有值为1的时候才能申请锁,否则被阻塞;V是释放锁,一直被放行
锁
1、脏读:将缓存中修改后但没有保存的数据称为脏数据
2、更新丢失:同时修改数据时,有一个进程的更新被覆盖了,也就是丢失了
一般锁分为两类:共享锁和互诉锁。共享锁也称为读锁,通常使用S字母表示;互诉锁也成为排他锁或写锁,通常使用X字母表示。
S X
S YES NO
X NO NO
下面是兼容性介绍:
1、当多个进程都只是读取同一份资源(即都申请S锁),因为没有修改数据,所以可以允许他们同时读取,所以S锁是可以共存的
2、如果有一个进程修改数据,它将申请X锁,这时显然不能让其他进程读取或写入数据,所以X锁与S锁、X锁和X锁都是互诉的
3、如果一个进程正在读取数据(即已申请S锁),其它进程想修改数据,也是不允许的,所以S锁和X锁是互诉的
程序如何变成进程
OS要让磁盘上一个可执行格式(不是可执行权限)程序运行起来,第一件事是装载(load)程序的相关代码以及静态数据(例如已初始化的变量)到内存中(具体的是到自己的虚拟地址空间,虚拟地址空间后面介绍)
在Unix系统中,设置好每个进程都关联的3个文件描述符:stdout、stdin、stderr),
程序都是由main()函数作为入口,然后OS将CPU控制权交给新创建的进程,进程获取到CPU后就可以执行了
进程表和进程数据结构
内核负责管理维护所有进程,内核在内核空间维护一个进程的数据结构,这个数据结构中记录了所有进程,每个进程在数据结构中都成为一个进程表项
进程表中除了记录了所有进程的PID,还使用一个字段记录了所有进程的指针,指向每个进程的进程控制块
在Linux中进程就是一个task_struct数据结构,所以PCB代表的就是task_struct(一个进程)
PCB包含了进程非常重要的信息,是上下文切换的关键,它保存在每个进程的内核栈中(用户栈和内核栈)
linux操作系统运行学习总结的更多相关文章
- 安装Linux操作系统,学习Liunx基础
安装Linux操作系统 遇到的问题以及解决方法 问题1:安装虚拟机时出现以下界面 解决方法 我的电脑--右击--管理--服务和应用服务--服务--在服务里启动:Device Install Servi ...
- 《趣谈 Linux 操作系统》学习笔记(一):为什么要学 Linux 及学习路径
前言:学习的课程来自极客时间的专栏<趣谈 Linux 操作系统>,作者用形象化的比喻和丰富的图片让课程变得比较易懂,为了避免知识看过就忘,打算通过写学习笔记的形式记录自己的学习过程. Li ...
- Linux操作系统服务器学习笔记一
初识Linux: Linux 是什么? Linux是一套免费使用和自由传播的类Unix操作系统,是一个多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软件.应用程序和网络协议 ...
- Linux操作系统入门学习总结(2015.10)
用了差不多45天的时间把Linux操作系统入门的资料学习了下.主要阅读了以下几本书: 鸟哥的私房菜:Linux基础学习篇(第三版) "Running Linux" <LINU ...
- 安装Linux操作系统,学习Linux基础
第一项:安装Linux系统 遇到的问题: 1.操作过程中遇到权限不足的情况. 解决过程:通过百度后发现可以使用sudo,或chmod命令解决. 2.在以上过程中对chmod命令的用法产生疑惑. 解决过 ...
- 《趣谈 Linux 操作系统》学习笔记(二):对 Linux 操作系统的理解
首先,我们知道操作系统是管理和控制计算机硬件与软件资源的计算机程序.这里把操作系统想象为一个软件外包公司,其内核就相当于这家外包公司的老板,那么我们可以把自己的角色切换成这家外包公司的老板,设身处地的 ...
- 2021-2022 20211420 《信息安全专业导论》安装Linux操作系统并学习Linux基础
作业信息 |作业属于|https://edu.cnblogs.com/campus/besti/2021-2022-1fois |作业要求|https://edu.cnblogs.com/campus ...
- linux操作系统运行一个java程序并外网访问
(一)安装jdk 1.新建文档java : mkdir java 2.进入java并且下载jdk 下载jdk : wget --no-check-certificate --no-cooki ...
- 深挖计算机基础:趣谈Linux操作系统学习笔记
参考极客时间专栏<趣谈Linux操作系统>学习笔记 核心原理篇:内存管理 趣谈Linux操作系统学习笔记:第二十讲 趣谈Linux操作系统学习笔记:第二十一讲 趣谈Linux操作系统学习笔 ...
随机推荐
- gitLab操作规范和项目流程
刚做完一个项目并且艰难得上线,对整个项目流程和gitLab规范 有了一些心得,给新来的同学普及一下. 最先产品会写一篇需求文档,咱们要先看需求文档对项目有一个大致了解,然后产品喊后端.ui.前端 一 ...
- js 实用技巧 短路求值
&&运算符 如果操作有false 则返回false 例如 0&&1 // 返回0 true&&false //返回false 0&&a ...
- Xgboost参数调节
转自:https://segmentfault.com/a/1190000014040317 整体: # 1.调试n_estimators cv_params = {'n_estimators': [ ...
- Keras cnn 手写数字识别示例
#基于mnist数据集的手写数字识别 #构造了cnn网络拟合识别函数,前两层为卷积层,第三层为池化层,第四层为Flatten层,最后两层为全连接层 #基于Keras 2.1.1 Tensorflow ...
- 微信小程序酒店日历超强功能
首先利用date拿到年月日 月记得+1 ,因为是从0开始的 先遍历月份,跨年年+1 ,月归至1: 然后遍历天数, lastDat = new Date(val.year,val.month,0).ge ...
- 学习python资料
资料链接:https://www.cnblogs.com/wupeiqi/articles/5433893.html
- 基于 HTML5 + WebGL 的无人机 3D 可视化系统
前言 近年来,无人机的发展越发迅速,既可民用于航拍,又可军用于侦察,涉及行业广泛,也被称为“会飞的照相机”.但作为军事使用,无人机的各项性能要求更加严格.重要.本系统则是通过 Hightopo 的 ...
- 如何利用腾讯云COS为静态博客添加动态相册
前言 本文首发于个人网站Jianger's Blog,欢迎访问订阅.个人博客小站刚建站不久,想着除了主题里的功能外再添加上相册模块,于是半搜索半摸索把相册模块搞出来了,最后采用了利用腾讯云对象存储作图 ...
- 洛谷$P3302$ 森林 $[SDOI2013]$ 主席树
正解:主席树 解题报告: 传送门! 口胡一时爽代码火葬场 这题想法不难,,,但显然的是代码应该还挺难打的 但反正我也不放代码,就写下题解趴$QwQ$ 第一问就是个$Count\ on\ a\ tree ...
- $Noip2015/Luogu2661$ 信息传递 并查集
Luogu $Description$ 给定一个有向图,每个点只有一条出边.求图里的最小环. $Sol$ 使得这个题不难的地方就在于每个点只有一条出边叭. 一边连边一边更新答案.首先当然是初始$f[i ...