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. Java 学习笔记(16)——Java数据库操作

    数据库操作是程序设计中十分重要的一个部分,Java内置JDBC来操作数据库 JDBC使用 JDBC--Java Database connecting Java数据库连接:本质上JDBC定义了操作数据 ...

  2. asdf

    [root@host01 ~]# netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' TIME_WAIT 3 CL ...

  3. git之本地篇(用tortoisegit操作)

    下载: git:https://git-scm.com/downloads tortoisegit(小乌龟):https://tortoisegit.org/ ortoisegit中文语言包 v2.9 ...

  4. mysql中的表操作

    ------------恢复内容开始------------ 创建数据库 create database 数据库名 切换数据库 use 数据库名 建表: create table 表名 ( 字段名1, ...

  5. [工具] Git版本管理(一)(基本操作)

    一.版本控制的发展 1.用文件来做版本控制 我们在写论文.做方案等的时候,一般都会同时在文件夹中存在很多版本的文件. 例如: 这种方式很常用,在很多领域都是用这种方式来进行版本控制的. 2.本地版本控 ...

  6. U3D Shader_图片模糊处理

    shader"practice/12.14"{ properties { _MainTex("MainTex",2D) = ""{} } S ...

  7. Linux 学习笔记 5 文件的下载、压缩、解压、初步认识yum

    写在前面 上节我们通过简单的几组命令,已经完全的实现了文件的移动.删除.更名.以及复制,我们最常用的基本玩法,本节将带着大家学习压缩.解压的相关步骤. Linux 学习笔记 4 创建.复制.移动.文件 ...

  8. .net core 开车记:Data Protection Key 过期问题与登录页面访问慢

    K8s 船还没修好,.net core 车又出了问题,开着 k8s 豪华邮轮.飚着 .net core 极品飞车的好事真是多磨. 自从我们用上 .net core ,就一直被 .net core 的一 ...

  9. springboot多环境(dev,test,prod)配置

    前情提要 在我们开发工作中,常常因为配置的问题,搞得头昏脑大.开发环境.测试环境.配置各不相同,数据库.redis.注册中心等等参数都不一致,如果放在同一个配置文件,就会发现诸多注释,发布不同的环境, ...

  10. cassandra中的ACID,与RDBMS中的事务有何不同?

    Cassandra中的ACID标准 Apache Cassandra不遵循具有回滚或锁定机制的ACID(原子性,一致性,隔离性,持久性)事务,而是提供原子,隔离和持久的事务,并具有最终和可调的一致性, ...