操作系统
IAmLinGe
这个作者很懒,什么都没留下…
展开
-
操作系统上机题目(多进程1)
1、创建1个子进程2、程通过管道与子进程连接 子进程的标准输出连接到管道的写端主进程的标准输入连接到管道的读端3、进程中调用exec(“echo”, “echo”, “hello world”, NULL)4、进程中调用read(0, buf, sizeof(buf)),从标准输入中获取子进程发送的字符串,并打印出来code:#include<stdio.h>#...原创 2018-06-24 16:41:45 · 920 阅读 · 0 评论 -
操作系统上机作业-- 使用信号量解决生产者、计算者、消费者问题(多线程)
pc2.c: 使用信号量解决生产者、计算者、消费者问题• 功能和前面的实验相同,使用信号量解决实现思路: 生产者、计算者、消费者三者之间的关系和上一个编程任务一样,不一样的是,将互斥量、条件变量封装起来作为信号量,处理方式基本和上一个编程任务一样 实现代码:#include<stdio.h>#include<pthread.h>#includ...原创 2018-07-15 23:25:17 · 4714 阅读 · 12 评论 -
操作系统上机作业--使用条件变量解决生产者、计算者、消费者问题(多线程)
pc1.c: 使用条件变量解决生产者、计算者、消费者问题/*• 系统中有3个线程:生产者、计算者、消费者• 系统中有2个容量为4的缓冲区:buffer1、buffer2• 生产者生产'a'、'b'、'c'、‘d'、'e'、'f'、'g'、'h'八个字符,放入到buffer1• 计算者从buffer1取出字符,将小写字符转换为大写字符,放入到buffer2• 消...原创 2018-07-15 23:21:38 · 2493 阅读 · 0 评论 -
操作系统上机作业--多线程排序
sort.c: 多线程排序• 主线程创建一个辅助线程• 主线程使用选择排序算法对数组的前半部分排序• 辅助线程使用选择排序算法对数组的后半部分排序• 主线程等待辅助线程运行結束后,使用归并排序算法归并数组的前半部分和后半部分实现思路: ARRAY_COUNT存放要进行排序的数字的个数,need_sort_array[ARRAY_COUNT];记录待排序的数字,s...原创 2018-07-15 23:12:42 · 2505 阅读 · 0 评论 -
操作系统上机作业--根据莱布尼兹级数计算PI(2)(多线程)
pi2.c: 使用N个线程根据莱布尼兹级数计算PI• 与上一题类似,但本题更加通用化,能适应N个核心,需要使用线程参数来实现• 主线程创建N个辅助线程• 每个辅助线程计算一部分任务,并将结果返回• 主线程等待N个辅助线程运行结束,将所有辅助线程的结果累加实现思路: N为创建线程的个数,在main()函数控制创建的线程的个数,并在创建线程时,根据创建的顺序向voi...原创 2018-07-15 22:54:02 · 2275 阅读 · 2 评论 -
操作系统上机作业--根据莱布尼兹级数计算PI(1)(多线程)
pi1.c: 使用2个线程根据莱布尼兹级数计算PI• 莱布尼兹级数公式: 1 - 1/3 + 1/5 - 1/7 + 1/9 - ... = PI/4• 主线程创建1个辅助线程• 主线程计算级数的前半部分• 辅助线程计算级数的后半部分• 主线程等待辅助线程运行結束后,将前半部分和后半部分相加实现思路: 用全局变量存储主线程和副线程中的计算结果,然后将结果相...原创 2018-07-15 22:48:58 · 4276 阅读 · 2 评论 -
操作系统上机作业--实现shell(2)(多进程)
sh2.c: 实现shell程序,要求在第1版的基础上,添加如下功能• 实现文件重定向• $ echo hello >log• $ cat log• Hello实现思路: 和sh1.c相比,主要是修改了cmd函数的实现过程。通过循环找出重定向符号">"的位置,记录下来,并记录下重定向符号后面的文件名,open该文件,然后创建一个子进程,在子进程中,使...原创 2018-07-15 22:42:41 · 2701 阅读 · 3 评论 -
操作系统总结
一、三种观点看操作系统静态:操作系统是管理和控制计算机硬件与软件资源的计算机程序,所以从本质上来讲,操作系统本身也是一个由不同指令组成的计算机程序,而程序只是一组有序的指令集合,所以操作系统它是静态的。动态:操作系统作为计算机管理程序,常驻内存,管理着运行在计算机上的所有进程,控制着进程的生成、执行与消亡,需要动态管控进程的资源请求,所以从进程管控的角度看,操作系统是动态的。分层、扩充:...原创 2018-07-03 03:40:48 · 946 阅读 · 0 评论 -
操作系统上机作业--实现shell(1)(多进程)
sh1.c: 实现shell程序,要求具备如下功能支持命令参数$ echo arg1 arg2 arg3$ ls /bin /usr/bin /home实现内置命令cd、pwd、exit$ cd /bin$ pwd/bin实现代码:#include&lt;stdio.h&gt;#include&lt;sys/wait.h&gt;#include&...原创 2018-06-27 05:49:01 · 3098 阅读 · 2 评论 -
操作系统上机作业--实现mysys(多进程)
mysys.c: 实现函数mysys,用于执行一个系统命令,要求如下mysys的功能与系统函数system相同,要求用进程管理相关系统调用自己实现一遍使用fork/exec/wait系统调用实现mysys不能通过调用系统函数system实现mysys 测试程序#include &lt;stdio.h&gt;int main(){ printf("---------...原创 2018-06-27 05:44:30 · 3488 阅读 · 2 评论 -
操作系统上机作业--使用系统调用实现mycp
mycp.c的功能与系统cp程序相同将源文件复制到目标文件,例子如下:要求使用系统调用open/read/write/close实现$ cat /etc/passwdroot:x:0:0:root:/root:/bin/bashdaemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologinbin:x:2:2:bin:/bin:/usr/sbin...原创 2018-06-27 05:40:32 · 2109 阅读 · 0 评论 -
操作系统上机作业--使用系统调用实现mycat
mycat.c的功能与系统cat程序相同mycat将指定的文件内容输出到屏幕,例子如下:要求使用系统调用open/read/write/close实现$ cat /etc/passwd root:x:0:0:root:/root:/bin/bashdaemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologinbin:x:2:2:bin:/bin...原创 2018-06-27 05:37:53 · 1774 阅读 · 0 评论 -
基于顺序搜索的动态分区分配算法模拟内存动态分配--最佳适应算法(best fit,BF)
BF算法、男朋友算法,哈哈 要实现动态分区分配,需要考虑三个方面的问题。分别是数据结构、分区分配算法、分区的分配与回收操作。首数据结构这里我们使用的是空闲分区链,采用双向链表表示空闲分区。 具体实现如下:typedef struct LNode{ int order; //表示内存块的顺序 int start; ...原创 2018-06-27 05:29:32 · 4542 阅读 · 0 评论 -
最佳适应算法模拟内存分配
最佳适应算法从全部空闲区中找出能满足作业要求的,且大小最小的空闲分区,这种方法能使碎片尽量小。问题描述Given five memory partitions of 100 KB, 500 KB, 200 KB, 300 KB, and 600 KB (in order), how would each of the first-fit, best-fit, and worst-fi...原创 2018-06-24 23:45:19 · 4050 阅读 · 0 评论 -
操作系统上机题目(多线程2)
主线程创建4个子线程T1、T2、T3、T4,主线程在4个子线程退出后,才退出线程T1、T2、T3、T4的运行时代码如下:#include <unistd.h> // sleep函数声明在该头文件中void *T1_entry(void *arg){ sleep(2); // 睡眠2秒,不准删除此条语句,否则答题无效 puts(“T1”);}...原创 2018-06-24 16:56:28 · 769 阅读 · 0 评论 -
操作系统上机题目(多线程1)
主线程创建10个子线程 第0个子线程计算从01加到10的和 - 第1个子线程计算从11加到20的和 … 第9个子线程计算从91加到100的和 2. 主线程归并10个子线程的计算结果,最终结果为5050 本题必须使用线程参数来完成#include<stdio.h>#include<unistd.h>#include<stdlib.h>#i...原创 2018-06-24 16:50:59 · 1240 阅读 · 0 评论 -
操作系统上机题目(多进程2)
1、主进程创建2个子进程,主进程通过两个管道分别与两个子进程连接2、第一个子进程计算从1加到50的和,并将结果通过管道送给父进程3、第一个子进程计算从50加到100的和,并将结果通过管道送给父进程4、父进程读取两个子进程的结果,将他们相加,打印出来,结果为5050code:#include<stdio.h>#include<unistd.h>#in...原创 2018-06-24 16:47:02 · 563 阅读 · 0 评论 -
操作系统上机作业--创建N个线程(多线程)
ring.c: 创建N个线程,它们构成一个环• 创建N个线程:T1、T2、T3、… TN• T1向T2发送整数1• T2收到后将整数加1• T2向T3发送整数2• T3收到后将整数加1• T3向T4发送整数3• …• TN收到后将整数加1• TN向T1发送整数N实现思路: 循环创建N个线程,并在创建线程的时候对线程函数传入线程序数,...原创 2018-07-15 23:29:36 · 2896 阅读 · 2 评论