![](https://img-blog.csdnimg.cn/20201031203356148.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
操作系统
理解操作系统
马小超i
你若盛开 清风自来
展开
-
I/O 多路复用之select、poll、epoll详解
select,poll,epoll都是IO多路复用的机制。I/O多路复用就是通过一种机制,一个进程可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝到用户空间。(这里啰嗦下)selectint select (int n, fd_set *re原创 2020-11-11 10:36:02 · 378 阅读 · 0 评论 -
Linux的IO模式【阻塞IO、非阻塞IO、IO多路复用、异步IO】
一 概念说明在进行解释之前,首先要说明几个概念:用户空间和内核空间 进程切换 进程的阻塞 文件描述符 缓存 I/O用户空间与内核空间现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证用户进程不能直接操作内核(kernel),保证内核的安全,操心系统将虚拟空间划分为两部分,一部分为内核空间,一部分为用户空间。针对linu原创 2020-11-11 10:33:31 · 119 阅读 · 0 评论 -
第六章:进程同步【临界区,Peterson算法、互斥锁、信号量、经典同步问题、管程】
6.1 背景互相协作的进程之间有共享的数据,于是这里就有一个并发情况下,如何确保有序操作这些数据、维护一致性的问题,即进程同步。多个进程并发访问和操作同一数据且执行结果与访问发生的特定顺序有关,称之为竞争条件。为了防止竞争条件,需要确保一次只有一个进程可以操作变量。6.2 临界区问题假设某个系统有n个进程{p0,p1...},每个进程有一个代码段称为临界区,在该区中进程可能改变共同变量、更新一个表或写一个文件等。这种系统的重要特征是当一个进程进入临界区,其他进程不允许在他们的临界区内执.原创 2020-11-30 14:49:54 · 3313 阅读 · 2 评论 -
叙事方式说明 线程和进程的关系和区别
面试中经常被问到,进程和线程的区别。在学习了进程和线程之后,我还是感觉这个问题也回答不了多少字。我们常说:进程是资源的分配和调度的一个独立单元,而线程是CPU调度的基本单元。那么除了这一句,面试的时候还要怎么回答进程和线程的区别呢?我觉得一二三四条的去列举进程和线程的区别,不如采取一个讲故事的叙事方式。首先,进程是一个执行中的程序,执行这个程序除了需要本身的代码段之外,还需要由操作系统分配给他一些资源,使得这个进程可以完成我们想让他完成的任务。这些资源包括:内存( 数据段,栈、堆 .原创 2020-11-24 16:28:04 · 181 阅读 · 0 评论 -
第四章:线程概述【单线程、多线程模型、线程库、线程池】
4.1 概述线程是CPU使用的基本单元,由线程ID,程序计数器,寄存器组和堆栈组成。它与属于同一进程的其他线程共享代码段,数据段和其他操作系统资源。4.1.1 单线程进程和多线程进程4.1.2多线程编程的优点响应度高:一个多线程的程序即使部分阻塞,其他部分仍能运行,从而增加了对用户的响应程度。 资源共享:线程默认共享他们的所属进程的内存和资源。 经济:创建和切换线程比创建进程更节省资源和时间。 多处理器体系结构的利用:多线程能充分利用多处理器体系。4.2 多线程模型...原创 2020-11-19 18:10:12 · 815 阅读 · 0 评论 -
怎么牢牢记住并发和并行以及他们的区别?
官方定义:并发:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行。并行:当系统有一个以上CPU时,当一个CPU执行一个进程时,另一个CPU可以执行另一个进程,两个进程互不抢占CPU资源,可以同时进行。怎么记忆?并发:并发的重点是“发”,这个“发”可以理解为“发生”。一个事件的发生是有过程的,正如一个程序的执行也是有过程的。并发强调的是多个程序的执行看起来是同时“发生”的。单处理器系统怎么做到并发呢?操作系统是把CPU的时间划分.原创 2020-11-19 16:59:04 · 422 阅读 · 2 评论 -
Linux下的进程控制原语【pid_t,fork,exec,wait,waitpid,getpid,kill,pasue,sleep,signal】
目录一、pid_t 进程号类型二、与进程创建、执行有关的系统调用说明fork()系统调用:exec 系统调用:wait() 和 waitpid() 系统调用:getpid()系统调用语法:三、与进程控制有关的系统调用说明kill 系统调用:pause 系统调用:sleep 系统调用:signal 系统调用:四、进程示例实验一、pid_t 进程号类型经常碰到一个语句:pid_t pid = fork();这里的pid_t是一个类型,就像int型一样.原创 2020-10-27 16:55:19 · 1935 阅读 · 0 评论 -
Linux下使用ps命令查看进程状态【ps常用命令】
Linux中的ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。简介linux上进程有以下种状态: R 可运行状态:此时进程正在运行或者正在运行队列中等待准备运行 等待状态(阻塞状态):此时进程在等待一个事件的发生或某种系统资源。在Linux系统中等待状态又细分为两种等待状态:可中断的等待状态和不可中断的等待状态。 ...原创 2020-10-26 21:31:08 · 15999 阅读 · 0 评论 -
僵尸进程与孤儿进程的产生原因、危害,解决办法
1 僵尸进程1.1 为什么会有僵尸进程Linux 允许进程查询内核以获得其父进程的 PID,或者其任何子进程的执行状态。例如,进程可以创建一个子进程来执行特定的任务,然后调用诸如 wait() 这样的一些库函数检查子进程是否终止。如果子进程已经终止,那么,它的终止代号将告诉父进程这个任务是否已成功地完成。为了遵循这些设计原则,不允许 Linux 内核在进程一终止后就丢弃包含在进程描述符字段中的数据。只有父进程发出了与被终止的进程相关的 wait() 类系统调用之...原创 2020-10-26 21:08:37 · 2973 阅读 · 0 评论 -
进程通信方式详解【管道、消息队列、共享内存、信号量】
目录进程间通信的目的:常见的通信方式按通信类型区分详解3.1 管道(无名管道)3.2 命名管道3.3消息队列3.4 共享内存3.5信号量进程间通信的目的:1)数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几兆字节之间。2)共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻看到。3)通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。4)资..原创 2020-10-29 15:49:24 · 4458 阅读 · 0 评论 -
CPU进程调度算法【FCFS、SJF、优先级、RR、多级队列、多级反馈队列调度】
目录一、先到先服务调度:二、最短作业优先调度:三、优先级调度:四、轮转调度:五、多级队列调度:六、多级反馈队列调度:CPU调度算法处理的问题是:从就绪队列中选择进程以便为其分配CPU。一、先到先服务调度:First Come,First Served(FCFS)定义:先请求CPU的进程首先分配到CPU。FCFS策略可以通过FIFO队列轻松实现。护航效果:其他所有进程会等待一个大进程释放CPU非抢占式:一旦CPU分配给了一个进程,该进程就会使用CPU知道释.原创 2020-10-17 17:44:28 · 3102 阅读 · 0 评论 -
第三章:进程概念【进程状态、进程控制块、进程调度、进程操作、进程通信】
3.1 进程概念3.1.1 进程进程包含了程序代码和当前活动(其中当前活动通过程序计数器和处理器寄存器的内容表示)两个部分,进程是执行中的程序。具体有: 文本段(代码段) 数据段(全局变量) 栈(stack)(包含临时数据、函数参数、返回地址、局部变量) 堆(heap)(进程运行期间动态分配的内存) 程序计数器注意: 程序是被动实体,进程是活动实体(其中当前活动通过程序计数器和处理器寄存器的内容表示) 两个进程可以与同一程序联...原创 2020-10-26 14:57:18 · 788 阅读 · 0 评论 -
批处理系统、分时系统、实时操作系统的特点和比较
一、批处理系统在批处理系统中,用户所提交的作业都先存放在外存上并排成一个队列,称为“后备队列”。然后,由作业调度程序按一定的算法从后备队列中选择若干个作业调入内存,使它们共享CPU和系统中的各种资源。特点:多道:在内存中同时存放多个作业,一个时刻只有一个作业运行,这些作业共享CPU和外部设备等资源。 成批:用户和作业之间没有交互性。用户自己不能干预自己的作业的运行,发现作业错误不能及时改正。 批处理系统的目的是提高系统吞吐量和资源的利用率(系统吞吐量是指系统在单位时间内所完成的总工作量。能提原创 2020-11-19 09:52:18 · 30882 阅读 · 0 评论 -
SMP对称多处理器与多核的定义与区别
目录SMP和多核的基本概念:SMP和多核的区别:大势取向:SMP和多核的基本概念:SMP:(Symmetrical Multi-Processing)对称多处理器 顾名思义,就是指:相同的多个处理器 多核:  ...转载 2020-07-18 08:58:23 · 2069 阅读 · 0 评论 -
Linux的内核空间和用户空间及其切换
本文以 32 位系统为例介绍内核空间(kernel space)和用户空间(user space)。内核空间和用户空间对 32 位操作系统而言,它的寻址空间(虚拟地址空间,或叫线性地址空间)为 4G(2的32次方)。也就是说一个进程的最大地址空间为 4G。操作系统的核心是内核(kernel),它独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证内核的安全,现在的操作系统一般都强制用户进程不能直接操作内核。具体的实现方式基本都是由操作系统将虚拟地址空间划分为两部分原创 2020-11-10 17:57:49 · 1429 阅读 · 0 评论 -
操作系统概论【引入操作系统中的基本概念和操作】
概论只做系统性的陈述,串联,不涉及内部的实现细节。操作系统:操作系统是管理计算机硬件并提供应用程序行环境的软件。操作系统最为直观之处或许是它提供的用户与计算机系统的界面。内存:为了让计算机执行程序,程序应在内存中。内存是唯一的、处理器可以直接访问的、大容量的存储区域。内存为字节数组,其容量为数百万到数十亿。每个内存字节都有地址。内存通常是易失性存储,关闭或失去电源就会失去内容。大多数计算机系统都提供了外存,以扩充内存。外存提供了一种非易失存储,可长久保存大量数据。最常用的外存是磁盘,它提供数原创 2020-10-24 15:20:39 · 313 阅读 · 0 评论