操作系统
书旅LY
这个作者很懒,什么都没留下…
展开
-
计算机操作系统基础(十七)---进程同步之Unix域套接字
引言本篇为第十七篇,进程同步之Unix域套接字。上一篇介绍了通过共享内存处理进程同步的问题,本文是实现进程同步的另一个方法—Unix域套接字Unix域套接字域套接字是一种高级的进程间通信的方法Unix域套接字可以用于同一机器进程间通信套接字(socket)原是网络通信中使用的术语Unix系统提供的域套接字提供了网络套接字类似的功能在前边了解到,共享内存需要额外的同步机制,来同步多个进程间的通信。Unix域套接字就不需要额外的机制来保证多个进程间通信的问题(其实我们在部署Nginx的时候,就原创 2020-07-11 10:47:25 · 291 阅读 · 0 评论 -
计算机操作系统基础(十六)---进程同步之共享内存
引言本篇为第十六篇,进程同步之共享内存。前边介绍到的都是解决线程同步的方法,本文为处理进程同步的方法—共享内存共享内存线程同步每个进程可能会有一个或多个线程,线程是共享进程资源的,线程之间也需要通信,又或者说线程之间需要同步一些进程资源的状态,此时就需要线程之间的信息同步进程同步一个操作系统中可能有一个或多个进程,进程是共享计算机资源的(包括内存、磁盘等都是共享的),因此在进程之间也同样需要信息同步。在之前的文章中提到的生产者-消费者问题,以及哲学家进餐问题都是进程同步的原因在学习本篇的共享内原创 2020-07-09 12:34:54 · 1979 阅读 · 0 评论 -
计算机操作系统基础(十五)---使用fork系统调用创建进程
引言本文为第十五篇,使用fork系统调用创建进程。创建进程属于非常重要的内容,无论是哪种语言,底层在创建进程的时候都是使用fork函数,本文使用C语言来熟悉fork系统调用创建进程使用fork系统调用创建进程fork系统调用是用于创建进程的fork创建的进程初始化状态是和父进程一样的(进程有进程空间、内存、内存态等)系统会为fork的进程分配新的资源(包括内存资源、CPU资源等)fork系统调用无参数fork会返回两次,分别返回子进程id和0(第一次是由父进程返回的,第二次由子进程所返回的,原创 2020-07-08 12:43:10 · 2779 阅读 · 0 评论 -
计算机操作系统基础(十四)---线程同步之条件变量
引言本文为第十四篇,线程同步之条件变量,在上一篇文章是介绍了读写锁,读写锁在多读少写的情况下,性能要强于互斥量。本篇再介绍一种重要的处理线程同步的方法—条件变量条件变量条件变量是一种相对复杂的线程同步方法条件变量允许线程睡眠,直到满足某种条件当满足条件时,可以向该线程发送信号,通知唤醒线程对于前边所介绍的生产者-消费者模型,其实是有一定的漏洞的当缓冲区小于0时,不允许消费者消费,消费者必须等待当缓冲区满时,不允许生产者往缓冲区生产,生产者必须等待在前边的文章中并没有对这个进行约束,原创 2020-07-07 12:34:43 · 153 阅读 · 0 评论 -
计算机操作系统基础(十三)---线程同步之读写锁
引言本文为第十三篇,线程同步之读写锁,读写锁也是解决线程同步的方法之一,在前边的两篇文章中国已经介绍了互斥量和自旋锁两种方法。读写锁的原理也和前边两种锁类似,但是读写锁做了一些改进读写锁读写锁的改进是从以下几个点进行考量的,其中最重要的是对临界资源的考量。在复杂的开发环境中,很可能会出现对临界资源多读少写的情况。比如说一个数据库中的表,存储的主要是一些历史数据,对于这些历史数据,一般都是进行查询,很少进行修改,那么这个存储历史数据的表就属于多读少写的临界资源。对于读取的时候并不会改变临界资源的值,如果原创 2020-07-06 12:43:50 · 402 阅读 · 0 评论 -
计算机操作系统基础(十二)---线程同步之自旋锁
引言本文为第十二篇,线程同步之自旋锁,在上一篇文章介绍了互斥量,通过互斥量解决线程同步的问题。本文是另一个解决线程同步的方法—自旋锁自旋锁自旋锁的工作原理跟互斥量的工作原理其实是一模一样的,它也是在访问临界资源之前加一个锁,完成之后再将锁给释放掉。但是互斥量和自旋锁还是有一点区别的自旋锁也是一种多线程同步的变量使用了自旋锁的线程会反复检查锁变量是否可用,如果不可用就会循环反复的检查因此自旋锁不会让出CPU,是一种忙等待状态因此自旋锁其实就是:死循环等待锁被释放自旋锁好处自旋锁避免了进原创 2020-07-05 19:28:34 · 433 阅读 · 0 评论 -
计算机操作系统基础(十一)---线程同步之互斥量
引言本文为第十一篇,线程同步之互斥量,在前边的《计算机操作系统基础(四)—进程管理之进程同步》中提到了进程同步和线程同步的方法,本篇为线程同步方法之一—互斥量。建议重新回顾一下《计算机操作系统基础(四)—进程管理之进程同步》这篇文章,方便理解后边的几篇关于线程同步和进程同步的知识互斥量在进程同步的那篇文章中有介绍到生产者和消费者模型,该模型中有两个线程,分别充当生产者和消费者的角色,在并发的情况下,这两个线程很有可能同时去操作临界资源,如果同时去操作临界资源就有可能造成线程同步的问题,互斥量就是解决线原创 2020-07-04 13:52:51 · 595 阅读 · 1 评论 -
计算机操作系统基础(十)---存储管理之虚拟内存
引言本文为第十篇,存储管理之虚拟内存,在正式了解之前,有一个问题,一个游戏十几G,物理内存只有4G,那么这个游戏是怎么运行起来的呢?为了解决这个问题,就需要本篇中介绍到的虚拟内存的知识虚拟内存概述有些进程实际需要的内存很大,超过物理内存的容量多道程序设计,使得每个进程可用物理内存更加稀缺不可能无限增加物理内存,物理内存总有不够的时候这些原因就促使虚拟内存技术的产生虚拟内存是操作系统内存管理的关键技术使得多道程序运行和大程序运行成为现实把程序使用内存划分,把部分暂时不使用的内存放置在辅原创 2020-07-03 13:03:57 · 303 阅读 · 0 评论 -
计算机操作系统基础(九)---存储管理之段页式存储管理
引言本文为第九篇,存储管理之段页式存储管理,前边的文章介绍到了存储管理的内存分配和回收,从物理的角度了解了存储管理,本文从进程的角度去了解进程的存储管理。也就是操作系统是如何管理进程的空间页式存储管理在这之前先来了解页面的概念在计算机组成原理中有字和字块的概念,字块是相对物理设备的定义(像内存条)。而页面是相对逻辑空间的定义(也就是相对进程空间的定义)。字块和页面都指的是大小一样的一块内存页式存储管理会将进程逻辑空间等分成若干大小的页面相应的也会把物理内存空间分成与页面大小一样的物理块以页面原创 2020-07-02 12:36:31 · 1377 阅读 · 0 评论 -
计算机操作系统基础(八)---存储管理之内存分配与回收
引言本文为第八篇,存储管理之内存分配与回收,早期计算机编程并不需要过多的存储管理,随着计算机和程序越来越复杂,存储管理成为必要。本篇主要是了解内存分配的过程和内存回收的过程存储管理的意义确保计算机有足够的内存处理数据确保程序可以从可用内存中获取一部分内存使用确保程序可以归还使用后的内存以供其它程序使用内存分配的过程单一连续分配单一连续分配是最简单的内存分配方式只能在单用户、单进程的操作系统中使用它分配的过程就是把内存分为系统区和用户区系统区指的是系统区所有的内存都给操作系统区使原创 2020-07-01 13:09:31 · 1875 阅读 · 0 评论 -
计算机操作系统基础(七)---作业管理之死锁
引言本文为第七篇,作业管理之死锁,死锁是计算机操作系统中非常重要的概念,本文主要介绍什么是死锁以及如何解决死锁死锁死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程举个例子:如果这四辆汽车按照如图的方向行驶,堵在十字路口,相互之间没有退让的话,这四辆汽车就形成了死锁。死锁的产生竞争资源进程调度顺序不当竞争资源为什么会出现竞争资源?原创 2020-06-30 10:54:38 · 310 阅读 · 1 评论 -
计算机操作系统基础(六)---作业管理之进程调度
引言本文为第六篇,作业管理之进程调度,本文主要介绍进程调度的概述和进程调度的算法一、进程调度概述进程调度是指计算机通过决策决定哪个就绪进程可以获得CPU使用权。也就是说,进程调度指的是计算机选择哪一个进程可以使用CPU,前提是这个进程的状态为就绪状态进程调度有两个步骤:保留旧进程的运行信息,请出旧进程选择新进程,准备运行环境并分配CPU为了实现进程调度的这两个步骤,就需要了解三种重要的机制:就绪队列的排队机制选择运行进程的委派机制新老进程的上下文切换机制就绪队列的排队机制(1原创 2020-06-29 11:11:06 · 4571 阅读 · 0 评论 -
计算机操作系统基础(五)---Linux的进程管理
引言本文为第五篇,Linux的进程管理,本文主要介绍Linux进程的相关概念、操作Linux进程的相关命令等。一、Linux进程的相关概念1、进程的类型(1)前台进程前台进程就是具有终端,可以和用户进行交互的进程下边写了一个死循环计算圆周率的程序然后将程序跑起来,虽然程序没有输入任何东西,它却占了整个终端shell,此时输入任何命令都是没有用的,这个进程就是一个前台进程现在改一下刚才的代码,让它不断的打印hello world此时运行代码,它会死循环的输出hello world,这个原创 2020-06-28 14:04:38 · 208 阅读 · 0 评论 -
计算机操作系统基础(四)---进程管理之进程同步
引言本文为第四篇,进程管理之进程同步,本文主要介绍为什么需要进程间同步以及进程间同步的原则和线程同步一、为什么需要进程间同步通过两个例子了解一下什么是进程同步以及为什么需要进程同步(1)生产者-消费者问题问题描述:有一群生产者进程在生产产品,并将这些产品提供给消费者进程进行消费,生产者进程和消费者进程可以并发执行,在两者之间设置了一个具有n个缓冲区的缓冲池,生产者进程需要将所生产的产品放到一个缓冲区中,消费者进程可以从缓冲区中取走产品消费生产和消费的过程当生产者生产了一个产品之后,缓冲区里的原创 2020-06-27 15:10:17 · 398 阅读 · 0 评论 -
计算机操作系统基础(三)---进程管理之五状态模型
引言本文为第三篇,进程管理之五状态模型,进程在操作系统里边是有多个状态的,本文就是了解进程在操作系统中的多个状态1、进程的五个状态创建状态就绪状态阻塞状态执行状态终止状态2、进程处于这五种状态时在做什么(1)就绪状态当进程被分配到除CPU以外的所有必要资源后,就处于就绪状态只要再获得CPU的使用权,就可以里立即运行其它资源都准备好,只差CPU资源的状态,就是就绪状态其它资源包括进程控制块(PCB)、内存、栈空间、堆空间等在操作系统里边,我们知道,多个程序可以并发的运行,这原创 2020-06-26 16:25:17 · 829 阅读 · 0 评论 -
计算机操作系统基础(二)---进程管理之进程实体
引言本文为第二篇,进程管理之进程实体,带着大家熟悉一下为什么要使用进程,以及进程实体是什么一、为什么需要进程从上一篇文章中我们知道,操作系统的基本功能就是管理底层的硬件资源,包括以下几个部分有了操作系统,这些资源都可以很便捷的被管理。那么假设在没有操作系统的时代,这些计算机资源又是如何被管理的呢?在没有配置OS之前,资源只属于当前运行的程序,且计算机只能运行一个程序,那么这个时候, 因为某些资源,当前运行的程序不可能完全合理的去利用,因此就引入了多道程序的概念,也配置了相关的OS。有了操作系统之原创 2020-06-25 12:55:53 · 620 阅读 · 0 评论