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操作系统学习笔 ...
随机推荐
- GitHub上传项目到远程库
写文章 GitHub上传项目到远程库 GitHub上传项目到远程库 今天把想把文件托管到GitHub仓库,但是执行一系列的命令以后,刷新GitHub网站还是没有任何更新.后来终于找到原因,原来 ...
- Java基础系列8——IO流超详细总结
该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架. 在初学Java时,I ...
- Java虚拟机参数,增加虚拟机最大内存,在/etc/profile增加如下: export JAVA_OPTS="-Xms9g -Xmx9g"
一.运行class文件 执行带main方法的class文件,Java虚拟机命令参数行为: java <CLASS文件名> 注意:CLASS文件名不要带文件后缀.class 例如: java ...
- vue-learning:11 -js-nextTick()
nextTick() 在jQuery中,如果我们要生成一个ul-li的列表元素,我们也不会在循环体中每生成一个li就将它插入到ul中,而是在循环体内拼接每个li,待循环体结束后,再一并添加到ul元素上 ...
- 慕课网electron写音乐播放器教程,代码跟随教程变动(十)
添加播放状态,首先是歌曲名称和时间 在index.html中添加 <div class="container fixed-bottom bg-white pb-4"> ...
- dotnet 通过 WMI 获取系统补丁
本文告诉大家如何通过 WMI 获取补丁 通过 Win32_QuickFixEngineering 可以获取系统启动的服务 下面代码只是获取补丁的 kb 字符 const string query = ...
- 2019牛客多校第一场 I Points Division(动态规划+线段树)
2019牛客多校第一场 I Points Division(动态规划+线段树) 传送门:https://ac.nowcoder.com/acm/contest/881/I 题意: 给你n个点,每个点有 ...
- ERROR StatusLogger Log4j2 could not find a logging implementation.
今天在学习structs2 2.5.5的版本的时候碰到2个问题.第一个网上下的包里面差log4j-core这个包. 虽然程序可以运行,但控制台会报这个错误. ERROR StatusLogger L ...
- 循环语句作业与循环补充(continue与break)
作业: 1.使用while循环输入1 2 3 4 5 6 8 9 10(没有7) n = 1 while n < 11: if n == 7: pass else: print(n) n = n ...
- element-ui table 的翻页记忆选中
公司中台项目刚开始开发,用了vue+element,需要许多前置调研,table的翻译记忆选中就是其中之一. template: <el-table :ref="tableRef&qu ...