随笔分类 - 杨一涛操作系统实验
摘要:问题描述(在日常生活中司机和售票员的行为动作需要满足一定的规则 ) 分析并发进程的交互点 1.首先我们将司机和售票员看成是2个进程,他们需要协调配合完成工作 2.我们需要找到进行并发执行过程中的交互点(一个进行肯定要等另一个进程做了才能接着往下做),在这个点上我们需要使用P v操作让他们按照正确的顺
阅读全文
摘要:信号量 Semaphore的值可以理解为是可用资源的数量,当 Semaphore=1的时候表明可用资源数为1,这和互斥锁中每次只能有一个进行可以访问临界区是一个意思,所以当 Semaphore=1的信号量也可以用来实现互斥锁 信号量的 P V操作,和互斥锁的lock和unlock操作基本类似。只不过
阅读全文
摘要:在并发交互的进程中存在竞争关系和协调关系,互斥锁就是用来实现竞争的进程的同步的 竞争主要是体现在临界区的访问上的,临界区是访问共享资源的一段代码块,进程通过访问临界区进而访问共享资源。因为对临界资源异步的进行访问,可能会使得我们程序出现因为访问顺序错误而产生的错误 我们的程序通过java的多线程来模
阅读全文
摘要:使用二值信号量解决多线程售票系统数据错误问题 实现代码 #include <stdio.h> #include <pthread.h> #include <unistd.h> #include <semaphore.h> int ticketAmout = 2; // 票的数量: 全局变量 sem_
阅读全文
摘要:不加锁的多线程售票系统存在的问题 售票系统实现代码 #include <stdio.h> #include <pthread.h> #include <unistd.h> int ticketAmout = 2; // 票的数量: 全局变量 void* ticketAgent(void* arg){
阅读全文
摘要:创建一个线程 #include<stdio.h> #include<unistd.h> #include<pthread.h> #include<sys/types.h> void* threadFunc(void* arg) { printf("In NEW threaad\n"); } int
阅读全文
摘要:对一些函数和知识的解释 getpid():返回当前进程的PID(进程编号) pid_t C语言重新定义的数据类型(其实就是int,换了一个名字)用来存储进程的PID。pid_t定义在sys/types.h头文件中 fork()函数:用于创建一个新进程作为当前进行的子进程。 如果成功创建⼦进程,对于⽗
阅读全文