- 博客(16)
- 资源 (2)
- 收藏
- 关注
原创 操作系统读书笔记___读者-写者问题(初稿)
推荐阅读读者优先或写者优先本篇博客是从读者优先的角度看的, 所谓读者优先是指除非有写者在写文件,否则读者不需要等待。一、含义一个数据文件或记录可被多个进程共享,我们把只要求读该文件的进程称为“Reader进程”,其他进程则被称为“Writer进程”1.1 要点允许多个进程同时读一个对象,因为读操作不会使数据文件混乱。 不允许一个Writer进程和其他Reader进程或Wr...
2018-12-30 20:03:13 313
原创 操作系统读书笔记___生产者-消费者问题
解决PC问题抓住两点:缓冲区满,生产者阻塞;缓冲区空,消费者阻塞;还需要注意互斥问题。生产者-消费者问题是进程互斥与同步的经典问题之一。
2018-12-30 11:38:14 385
原创 计算机操作系统读书笔记___管程
在面向过程语言提及的过程和面向对象提及的方法是一个意思。管程的概念 前言信号量的应用目录一、管程机制1.1 定义1.2 模型给出 二、生产者-消费者问题 一、管程机制1.1 定义代表共享资源的数据结构以及对该共享数据结构实施操作的一组过程所组成的资源管理程序共同构成了一个操作系统的资源管理模块。管程相当于“围城 ”。1.2 模型给出 特点...
2018-12-30 09:50:04 624
原创 计算机操作系统读书笔记___信号量机制
前言进程同步,衍生阅读互斥和同步区别,互斥锁读写锁自旋锁条件变量目录一、信号量机制1.1 背景1.2 整型信号量1.3 记录型信号量 1.4 AND型信号量1.5 信号量集一、信号量机制1.1 背景1965年,荷兰学者Dijkstra、计算机先驱之一提出的信号量机制(semaphores)机制是一种卓有成效的进程同步工具。在长期且广泛的应用中,信号量机制...
2018-12-28 23:54:08 1377
原创 分析时间复杂度(1)
目录一、度量1.1 定义1.2 思路二、实战2.1 例一2.2 例二求n!的递归函数的时间复杂度2.3 例三 一、度量1.1 定义将算法中基本操作的执行次数作为算法时间复杂度的度量。这里所讨论的时间复杂度不是执行完一段程序的总时间,而是其中基本操作的总次数。这很好理解:程序运行环境不同,运行的总时间是不同的,正如在银河系列巨型计算机和普通的个人用计算机运行同...
2018-12-28 14:22:04 2949
原创 计算机操作系统读书笔记___进程的引入
前言:单道程序和多道程序、进程和线程的区别目录一、进程的定义1.1 定义1.2 基本状态1.3 扩展状态二、PCB2.1 内容一、进程的定义在多道程序环境下,程序的执行属于并发执行,此时它们将失去封闭性,并具有间断性及不可再现性的特征。这决定了通常的程序是不能参与并发执行的。因为程序的结果是不可再现的。这样程序的运行也就失去了意义。为使程序能并发执行,并且为...
2018-12-27 15:57:34 354
原创 I/O复用___select函数的使用(一)
一、思路1.1 原理图1 事件结构体定义select函数会在内核维护3个数组(long int [32]从图1 我们可以看到),分别用于存放可读、可写、异常事件的文件描述符。所以本函数只能处理三种类型的事件:图2 判断事件是否发生的原理示意图事件检测机制分两步:第一步、主动将整型数组的特定位修改为1,比如说想监听文件描述符为3;第二步、去数组中观察那一位是不是仍为1,如果被...
2018-12-12 20:54:41 200
原创 典型C/S模式___多线程实现
一、思路1.1 大致轮廓图1 多线程实现思路正如图1 所示的那样,main主线程核心就在于循环探测是否有客户端的连接请求;一旦有客户端的连接请求,就立刻建立连接然后将客户端套接字移交给函数线程。主线程负责建立连接,函数线程负责具体业务的处理。这是非常清晰而且简单的想法。1.2 要点主线程如何将建立好的客户端套接字交付给函数线程?图2 客户端套接字在线程之间传递进程...
2018-12-10 19:07:43 1699
原创 I/O复用___epoll函数族的使用
一、思路从面向用户转向面向事件,这是一次全新的变革!很好地解决了服务器和客户端建立连接但是二者之间不频繁发生数据交互,浪费资源的情况。服务器是对事件提供服务,使得程序能同时监听多个文件描述符。在一段指定事件内,监听感兴趣的文件描述符上的事件,本文中提到两种:EPOLLIN可读、EPOLLRDHUP挂起。编程流程的核心如下:二、服务器端2.1 头文件#define _GNU...
2018-12-08 00:09:03 159
原创 I/O复用___poll函数的使用
一、思路二、服务器实现#define _GNU_SOURCE //linux中不支持POLLRDHUP#include<sys/socket.h> //socket() bind() listen() accept() recv() send()#include<string.h> //memset()#include<stdlib.h> //...
2018-12-06 00:17:34 156
原创 I/O复用___libevent
一、情景再现典型的C/S模式是这样的,不妨以多线程为例来说明:ser启动一个专门用于处理cli连接请求的线程,一旦需要连接,就accept,与cli建立连接,连接好后将事物交付给其他线程去处理。当我们从事件监听的角度读看待这个流程的话,服务器端起始有两处需要被监听:1、until有了连接请求才去accept;2、连接建立好了之后,until有了数据传输才会有recv或者send操作。二...
2018-12-01 12:28:14 130
使用读进程和写进程熟悉unix高级环境编程中出现了消息队列操作函数
2018-10-22
利用信号量实现进程间同步
2018-10-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人