
操作系统原理
文章平均质量分 66
nullcanon
健忘症患者的云端笔记
展开
-
进程和task_struct
进程什么是进程? 进程就是正在计算机上执行的实例。我们知道可执行文件都是存储在磁盘中,当计算机执行可执行文件时,才把可执行文件从磁盘中读取到内存上.然后cpu从内存上读取指令来运行程序,那在内存上等待或者正在被cpu执行的程序就是进程。操作系统是怎样标识进程的? 在进程执行时,anytime,进程总是被以下元素表示:标识符:用以和其他进程区分,比如说PID状态:表示程序当前状态,比如说是就绪原创 2017-12-10 14:41:54 · 323 阅读 · 0 评论 -
计算机体系结构
现在的计算机都是基于冯·诺依曼体系结构的,其中,cpu和内存是两个主要组成部分。内存主要保存数据和指令,而cpu从内存中取出指令执行。操作系统概图内存为了读取方便管理内存,每一个内存单元都进行了编址,这些编址是从0开始的整数,我们称之为地址。cpu可以通过地址找到相应的内存单元。而一个地址的内存单元只能存一个字节的数据。对于多字节的数据类型(如int)在内存中占连续多个地址,它的地址是多个地址的起始原创 2017-09-24 19:08:58 · 712 阅读 · 0 评论 -
进程通信之共享内存
共享内存 共享内存是进程间通信手段速度最快的一种,因为这些进程间的数据传递不需要执行进入内核的系统调用,而是多个进程共享一个公共内存,多个进程通过对内存的直接读写而实现通信 共享内存相关函数 shmget函数 功能 用来创建共享内存 原型 int shmget(key_t key, size_t size, int shmflg); 参数 ...原创 2018-03-27 16:31:21 · 368 阅读 · 0 评论 -
进程通信之信号量
信号量信号量是一个计数器,用来表示系统资源的数量,信号量用于多进程对共享数据对象的访问,来实现程序的同步互斥。为了正确实现信号量,信号量的加减操作必须是原子操作,因此,信号量也是在内核中实现的。先看一下同步互斥和原子操作:同步互斥互斥 一个进程占用资源,其它进程就不能使用该资源,进程间的这种关系为进程互斥。 这些只能被一个进程同时使用的资源被称为临界资源。 进程中访问...原创 2018-03-27 20:49:55 · 281 阅读 · 0 评论 -
进程通信之管道
管道管道是UNIX系统IPC的最古老形式,并且所有UNIX系统都提供此种通信机制,我们把一个进程连接到另一个进程的数据流称为管道,在管道中一个进程写,一个进程读。 管道的本质也就是操作系统内核提供的一段内存。管道在创建时获得固定字节数的大小,当一个进程往里面写时,如果有空间,写请求立即执行,否则该进程被阻塞。类似的,如果一个进程试图读取多于当前管道的字节数时,也会阻塞。管道有两类...原创 2018-03-28 16:14:18 · 159 阅读 · 0 评论 -
进程通信之消息队列
消息队列 消息队列就是存放消息(数据)的链表,这个链表由内核维护,并且由一个消息队列的标识符标识。 消息发送者可以指定消息发送的类型,接受这也可以依据类型来接受。接受者按照特定类型遵循先进先出的原则。 当进程试图给一个满的队列发送消息时,它会被阻塞;同样的,当进程试图从一个空的队列读消息时也会被阻塞。 但当一个进程试图读取某一个特定类型的消息,但没有这类型的消息而失败时,不会被阻塞。 消...原创 2018-03-28 17:04:09 · 328 阅读 · 0 评论