随笔分类 -  计算机操作系统

摘要:设置线程信息结构体 1 struct threadInfo 2 { 3 int *pstart; 4 int length; 5 int key; 6 int id; 7 }; 设置数组 1 int a[100]; 2 time_t ts; 3 srand((unsigned int)time(&t 阅读全文
posted @ 2018-02-03 20:50 喵小喵~ 阅读(191) 评论(0) 推荐(0)
摘要:以id创建时钟定时器 1 HANDLE time1 = CreateWaitableTimerA(NULL, TRUE, "mytimer");//创建时钟 创建时间 1 LARGE_INTEGER mytime; 2 mytime.QuadPart = -10000000; //等待一秒 设置定时 阅读全文
posted @ 2018-02-03 16:33 喵小喵~ 阅读(170) 评论(0) 推荐(0)
摘要:根据id创建Semaphore,并初始化有一个信号量可用 name类型是char *...; 1 HANDLE hsem = CreateSemaphoreA(NULL, 1, 1, name); 关闭句柄 1 CloseHandle(hsem); 根据id打开semaphore 1 HANDLE 阅读全文
posted @ 2018-02-03 15:49 喵小喵~ 阅读(616) 评论(0) 推荐(0)
摘要:创建互斥量mutex 1 HANDLE mutex = CreateMutexA(NULL, TRUE, name); 根据id打开mutex 1 HANDLE mutex = OpenMutexA(MUTEX_ALL_ACCESS,TRUE,name); 监听 1 DWORD res = Wait 阅读全文
posted @ 2018-02-03 15:26 喵小喵~ 阅读(630) 评论(0) 推荐(1)
摘要:以id创建事件 1 char name[100] = "myevent"; 2 HANDLE event = CreateEventA(NULL, FALSE, FALSE, name); 设置事件 1 SetEvent(event); 关闭事件 1 CloseHandle(event); 另一个进 阅读全文
posted @ 2018-02-03 13:17 喵小喵~ 阅读(875) 评论(0) 推荐(0)
摘要:创建互斥锁 1 SRWLOCK g_lock; 注意一个线程仅能锁定资源一次,不能多次锁定资源 读取期间锁定数据,数据无法被外部线程修改 1 AcquireSRWLockShared(&g_lock); 释放互斥锁 1 AcquireSRWLockShared(&g_lock); 注意一个线程仅能锁 阅读全文
posted @ 2018-02-03 13:09 喵小喵~ 阅读(182) 评论(0) 推荐(0)
摘要:创建信号量 1 //创建信号对象并开辟一个信号,最大计数是5,并初始化有五个可以用 2 HANDLE hSEM = CreateSemaphoreW(NULL, 5, MAX, id); 关闭信号量 1 CloseHandle(hSEM); 根据Id打开一个信号量 1 //根据一个id打开一个信号 阅读全文
posted @ 2018-02-03 13:03 喵小喵~ 阅读(279) 评论(0) 推荐(0)
摘要:创建定时器 1 HANDLE timer = CreateWaitableTimer(NULL, TRUE, NULL); 设置定时器时间 1 //设置时间 2 LARGE_INTEGER time; 3 time.QuadPart = -20000000;//以微秒为单位 等待 1 if (Wai 阅读全文
posted @ 2018-02-03 10:30 喵小喵~ 阅读(120) 评论(0) 推荐(0)
摘要:变量自增 1 InterlockedIncrement(&num); 变量加一个指定数 1 InterlockedAdd(&num, 100); 完整代码: 阅读全文
posted @ 2018-02-03 10:22 喵小喵~ 阅读(140) 评论(0) 推荐(0)
摘要:声明互斥量: 1 HANDLE mutex = NULL;//指针 创建互斥量 1 CreateMutex(NULL, FALSE, NULL);//创建互斥量 互斥量变为1 关闭互斥量 1 CloseHandle(mutex); 使用互斥量 1 WaitForSingleObject(mutex, 阅读全文
posted @ 2018-02-03 10:17 喵小喵~ 阅读(111) 评论(0) 推荐(0)
摘要:运行截图 创建事件 1 HANDLE event[4] = { 0 };//事件 创建线程 1 HANDLE hthread[3] = {0};//代表线程 创建临界区 CRITICAL_SECTION cs; 创建聊天缓冲区 1 volatile char str[1024] = { 0 };// 阅读全文
posted @ 2018-02-02 19:34 喵小喵~ 阅读(178) 评论(0) 推荐(0)
摘要:创建事件 1 HANDLE event[3] = { 0 }; 创建线程 1 HANDLE hthread[3] = { 0 }; 事件初始化 1 event[0] = CreateEvent(NULL, TRUE, FALSE, NULL); 2 //第一个参数,指定一个结构,用于设置对象的安全特 阅读全文
posted @ 2018-02-02 17:21 喵小喵~ 阅读(181) 评论(0) 推荐(0)
摘要:创建一个线程 1 _beginthread(myfun, 0, NULL);//返回值是一个HANDLE 1 hd[i] = CreateThread(NULL, 0, add, NULL, 0, NULL);//创建线程 线程内部结束 1 _endthread() 外部暂停线程 1 Suspend 阅读全文
posted @ 2018-02-02 16:11 喵小喵~ 阅读(1140) 评论(0) 推荐(0)
摘要:I/O方式 轮询 中断 DMA 通道 阅读全文
posted @ 2017-12-17 15:11 喵小喵~ 阅读(258) 评论(0) 推荐(0)
摘要:磁盘访问时间主要由三部分组成: 寻道时间 旋转延迟 传输时间 磁盘调度算法 FCFS(先来先服务) SSTF(最短寻到时间优先) SCAN(扫描) C-SCAN(循环扫描) 这种方式容易产生饥饿状态 阅读全文
posted @ 2017-12-17 11:11 喵小喵~ 阅读(334) 评论(0) 推荐(0)
摘要:存储结构 磁盘结构 数据计算 阅读全文
posted @ 2017-12-17 10:53 喵小喵~ 阅读(212) 评论(0) 推荐(0)
摘要:文件概念 文件示存储在某种介质上的并且具有文件名的一组相关信息的集合 文件属性 文件操作 存取方法: 目录结构 文件保护 文件系统实现: 阅读全文
posted @ 2017-12-14 16:37 喵小喵~ 阅读(152) 评论(0) 推荐(0)
摘要:非固定分区的内存管理 虚拟内存的根本就是将内存扩展到磁盘上,将磁盘也当做内存的一部分.虚拟地址就是用户每次看到的地址,这个地址只是一个抽象,它需要有内存单元进行翻译,变成物理内存地址才能使用.由于这个翻译是在程序执行过程中发生,因此成为动态地址翻译.有了动态地址翻译,一个虚拟地址仅在被访问的时候才需 阅读全文
posted @ 2017-12-14 12:23 喵小喵~ 阅读(353) 评论(0) 推荐(0)
摘要:内存管理模块提纲 基本概念和背景 连续区内存分配 页式内存管理 页表结构 段式内存管理 实例:Intel i386 重温一些计算机组成的知识点 程序必须装入内存后,才能被CPU解释,执行 CPU能够直接访问的,只有主存,寄存器 访问寄存器需要1个CPU时钟周期,很快 访问主存需要许多时钟周期,或者, 阅读全文
posted @ 2017-12-13 20:52 喵小喵~ 阅读(327) 评论(0) 推荐(0)
摘要:银行家算法,顾名思义,是仿照银行发放贷款采取的控制方式而设计的一种死锁避免算法. 该算法的策略是实现动态避免死锁.要明白此算法,就要明白银行的贷款策略. 银行的目的是让利润最大化,风险最低,为了控制风险,在放贷之前,要先审核客户的信用额度.客户对资金的使用是按阶段的,并不是一定第一次就得到全部贷款, 阅读全文
posted @ 2017-12-13 20:29 喵小喵~ 阅读(3421) 评论(0) 推荐(0)