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操作系统运行学习总结的更多相关文章

  1. 安装Linux操作系统,学习Liunx基础

    安装Linux操作系统 遇到的问题以及解决方法 问题1:安装虚拟机时出现以下界面 解决方法 我的电脑--右击--管理--服务和应用服务--服务--在服务里启动:Device Install Servi ...

  2. 《趣谈 Linux 操作系统》学习笔记(一):为什么要学 Linux 及学习路径

    前言:学习的课程来自极客时间的专栏<趣谈 Linux 操作系统>,作者用形象化的比喻和丰富的图片让课程变得比较易懂,为了避免知识看过就忘,打算通过写学习笔记的形式记录自己的学习过程. Li ...

  3. Linux操作系统服务器学习笔记一

    初识Linux: Linux 是什么? Linux是一套免费使用和自由传播的类Unix操作系统,是一个多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软件.应用程序和网络协议 ...

  4. Linux操作系统入门学习总结(2015.10)

    用了差不多45天的时间把Linux操作系统入门的资料学习了下.主要阅读了以下几本书: 鸟哥的私房菜:Linux基础学习篇(第三版) "Running Linux" <LINU ...

  5. 安装Linux操作系统,学习Linux基础

    第一项:安装Linux系统 遇到的问题: 1.操作过程中遇到权限不足的情况. 解决过程:通过百度后发现可以使用sudo,或chmod命令解决. 2.在以上过程中对chmod命令的用法产生疑惑. 解决过 ...

  6. 《趣谈 Linux 操作系统》学习笔记(二):对 Linux 操作系统的理解

    首先,我们知道操作系统是管理和控制计算机硬件与软件资源的计算机程序.这里把操作系统想象为一个软件外包公司,其内核就相当于这家外包公司的老板,那么我们可以把自己的角色切换成这家外包公司的老板,设身处地的 ...

  7. 2021-2022 20211420 《信息安全专业导论》安装Linux操作系统并学习Linux基础

    作业信息 |作业属于|https://edu.cnblogs.com/campus/besti/2021-2022-1fois |作业要求|https://edu.cnblogs.com/campus ...

  8. linux操作系统运行一个java程序并外网访问

    (一)安装jdk 1.新建文档java  : mkdir java 2.进入java并且下载jdk     下载jdk : wget --no-check-certificate --no-cooki ...

  9. 深挖计算机基础:趣谈Linux操作系统学习笔记

    参考极客时间专栏<趣谈Linux操作系统>学习笔记 核心原理篇:内存管理 趣谈Linux操作系统学习笔记:第二十讲 趣谈Linux操作系统学习笔记:第二十一讲 趣谈Linux操作系统学习笔 ...

随机推荐

  1. vue-learning:16 - js - computed

    computed 在指令章节讲过,插值{{ }}和指令都接受变量和表达式的写法,使用表达式可以进行简单的二元或三元运算.但如果要执行更加复杂的计算或频繁重复的计算,如果还是直接写在指令的表达式中会让代 ...

  2. vue-learning:29 - component - 组件三大API之三:slot

    组件三大API之三: slot <slot>标签 v-slot指令 普通插槽 有默认值的插槽 具名插槽 作用域插槽 v-slot是Vue 2.6.0引入的一个新语法指令,目的是统一之前sl ...

  3. dll中全局变量在外部进行引用

    在Windows中实际导出全局变量,您必须使用类似于export / import语法的语法,例如: #ifdef COMPILING_THE_DLL #define MY_DLL_EXPORT ex ...

  4. dotnet core 集成到 Mattermost 聊天工具

    在找了很久的团队交流工具,发现了 Mattermost 最好用,但是还需要做一些定制化的功能,于是就找到了 Mattermost 插件开发,还找到了如何自己写服务集成到 Mattermost 里面 本 ...

  5. VS code 汉化及快捷键修改

    VsCode汉化方式 Vscode是一款开源的跨平台编辑器.默认情况下,vscode使用的语言为英文(us),如何将其显示语言修改成中文了? 打开vscode工具: 点击左侧的Extensions(拓 ...

  6. LuoguP3521 [POI2011]ROT-Tree Rotations

    P3521 [POI2011]ROT-Tree Rotations 题目大意: 给一棵\((1≤n≤200000)\)个叶子的二叉树,可以交换每个点的左右子树,要求前序遍历叶子的逆序对最少. 我们发现 ...

  7. [板子]快速幂&矩阵快速幂

    不会的来这看:https://www.cnblogs.com/CXCXCXC/p/4641812.html 简单的一说:当转换为二进制的时候有位运算这种黑科技,&相当于%2判断奇偶性. x&a ...

  8. git之github解决冲突

    1.先创建一个txt文件,并进行编辑 2.然后推送到github,过程看之前的教程. 3.在另一个文件夹拉取(用小乌龟拉取),分别在克隆文件夹和原本文件夹操作test.txt. 4.把本体推送给服务器 ...

  9. codeforces -1214 E

    题目https://codeforces.com/problemset/problem/1214/E 就是得知奇数之间不产生影响,先造出一条链,再用偶数往里插就行.链要di从大到小排个序呀!! #in ...

  10. Python爬虫之Beautifulsoup模块的使用

    一 Beautifulsoup模块介绍 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Be ...