![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
小猪快点跑
这个作者很懒,什么都没留下…
展开
-
操作系统:生产者 - 消费者模型
一、同一机器上1、单生产者-单消费者 如果只有一个生产者和一个消费者,可以使用两个信号量 fillCount、emptyCount 来解决问题。 生产数据时:emptyCount--,进队,fillCount++。 消费数据时:fillCount--,出队,emptyCount++。semaphore fillCount = 0;sema...原创 2019-11-01 22:26:10 · 258 阅读 · 0 评论 -
操作系统:makefile
1、普通写法(1)文件名必须为 makefile 或者 Makefile(2)步骤all: 最终目标目标1: 依赖1 依赖2 ... gcc -c 依赖(.c) -o 目标(.o)目标2: 依赖11 依赖22 ... gcc 依赖(.o) -o 目标clean: 编译文件(.o) 最终目标/* makefile */...原创 2019-10-20 16:06:39 · 462 阅读 · 0 评论 -
操作系统:存储映射 mmap
1、存储映射 存储映射使一个磁盘文件映射到内存中,可以在不使用read、write的情况下,使用指针完成IO操作。可以将文件的一段映射到内存中。2、系统函数#include <sys/mman.h>void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset)...原创 2019-10-18 15:34:42 · 522 阅读 · 0 评论 -
操作系统:有名管道 FIFO
目录一、FIFO二、创建、删除FIFO三、读写FIFO四、循环读写 FIFO一、FIFO FIFO 是特殊的设备文件,主要用于没有亲缘关系的进程之间通信。同一有名管道不能多次创建,创建以后即可用操作文件的方式访问。 特点:(1)可以用于没有亲缘关系的进程之间的通信;(2)同一数据不能重复读,读一次就相当于从管道中拿走;(3)...原创 2019-10-17 20:25:44 · 487 阅读 · 0 评论 -
操作系统:fork、vfork、exec、signal、kill、umask
目录1、fork2、execlp、execl3、执行 ps aux4、孤儿进程、僵尸进程5、s_mod 文件权限、umask 文件权限创建屏蔽字6、vfork7、子进程等待父进程,父先终止1、fork(1)#include <stdio.h>#include <stdlib.h>#include <unistd.h>...原创 2019-10-16 14:34:28 · 274 阅读 · 0 评论 -
网络编程:多进程下多型客户端
1、server#include <stdio.h>#include <unistd.h>#include <sys/socket.h>#include <stdlib.h>#include <arpa/inet.h>#include <ctype.h>#include <string.h>#i...原创 2019-10-16 00:54:43 · 116 阅读 · 0 评论 -
操作系统:进程信号量 SEM
目录 进程信号量1、主要api2、样例程序,父子进程间同步3、系统中,信号量查看、删除进程信号量 进程信号量在头文件 <sys/sem.h> 中,可以实现父子进程间、非父子进程间同步。1、主要api// 创建/获取semidint semget(key_t key, int nsems, int semflg);...原创 2019-10-16 14:34:07 · 599 阅读 · 0 评论 -
操作系统:单例进程、单例守护进程
目录 一、单例进程文件锁主函数 二、单例守护进程一、单例进程文件锁/* filelock.h */#ifndef FILELOCK_H#define FILELOCK_H#include <stdio.h>#include <string.h>#include <sys/types.h> #i...原创 2019-10-16 14:34:17 · 367 阅读 · 0 评论 -
C/C++:STL 线程库
1、创建多线程#include <iostream>#include <thread>using namespace std;void printx(int x){ cout << "thread_id = " << this_thread::get_id() << " x = " << x <<...原创 2019-09-21 17:23:19 · 360 阅读 · 0 评论 -
操作系统:进程、线程、协程
1、进程、线程、协程 都可以实现多任务,即提高并发处理能力。 多cpu机器上可以实现多进程并行处理。原创 2019-09-19 22:12:22 · 75 阅读 · 0 评论 -
操作系统:守护进程、僵尸进程
一、守护进程 是一种在后台运行的、与终端完全脱离的进程,一般执行一些需要一直运行的任务。 是在后台运行不受终端控制的进程,一般的网络服务都是以守护进程的方式运行。1、在 linux 中创建守护进程(1)fork();创建子进程并关闭父进程,使新进程成为非组长进程,这是调用setsid的条件。新进程在后台运行,形式上脱离终端(并非真正脱离终端)。(2)...原创 2019-08-30 15:14:01 · 235 阅读 · 0 评论 -
linux 操作系统:pthread 多线程库
一、线程创建#include <stdio.h>#include <unistd.h> //posix标准的unix标准接口#include <pthread.h>pthread_t tid1; //线程idpthread_t tid2;void *fun1() //线程函数{ pid_t pid = getpi...原创 2019-08-15 15:02:31 · 698 阅读 · 0 评论 -
CPU调度算法:先来先服务、短作业优先、时间片轮转
一、非抢占式1、短作业优先(1)会产生饥饿,对短作业有利,对长作业不利,长作业有可能一直得不到执行;(2)平均响应时间/平均等待时间最短。(3)平均周转时间最短。2、先来先服务(1)不会产生饥饿,但对于短作业不利,短作业等待时间长。3、高响应比优先 响应比 = (等待时间+服务时间)/ 服务时间(1)不会产生饥饿,等待时间长时,响应比会变大;(...原创 2019-08-10 16:26:15 · 5018 阅读 · 0 评论 -
操作系统:死锁
一、死锁的产生1、产生死锁的原因(1)资源竞争(2)进程间推进顺序非法2、产生死锁的必要条件(1)互斥条件 指进程对所分配的资源进行排他性使用,即在某一段时间内某资源只能被一个进程占有。如果此时还有其他进程请求该资源,则只能等待,直到占用该资源的进程使用完毕将其释放。(2)请求和保持条件 进程已经保持至少一个资源,此时又申请另一个资源,但...原创 2019-06-30 22:59:35 · 133 阅读 · 0 评论 -
临界资源、临界区
1.临界资源临界资源是一次仅允许一个进程使用的共享资源。各进程采取互斥的方式,实现共享的资源称作临界资源。属于临界资源的硬件有,打印机,磁带机等;软件有消息队列,变量,数组,缓冲区等。诸进程间采取互斥方式,实现对这种资源的共享。2.临界区:每个进程中访问临界资源的那段代码称为临界区(criticalsection),每次只允许一个进程进入临界区,进入后,不允许其他进程进入。不论是硬...转载 2019-07-10 00:28:59 · 1745 阅读 · 0 评论