计算机基础——操作系统:提升

1、导学
计算机基础——操作系统:提升
  前面所学的“生产者-消费者问题”以及“哲学家问题”,他们都要访问临界资源,在某些情况下会出现问题,因此我们必须要进行线程以及进程的同步。

计算机基础——操作系统:提升
计算机基础——操作系统:提升


2、线程同步之互斥量
计算机基础——操作系统:提升
计算机基础——操作系统:提升
计算机基础——操作系统:提升
计算机基础——操作系统:提升
计算机基础——操作系统:提升
计算机基础——操作系统:提升
  注意,互斥锁是给临界资源加锁,即一个线程在操作临界资源的时候,就给这个临界资源加锁,此时其他的线程不能操作这个临界资源。


3、线程同步之自旋锁

计算机基础——操作系统:提升
计算机基础——操作系统:提升
计算机基础——操作系统:提升
计算机基础——操作系统:提升


4、线程同步之读写锁
计算机基础——操作系统:提升
计算机基础——操作系统:提升
计算机基础——操作系统:提升
  我们在读取临界资源的时候,即使多线程同时在读取,也不会产生线程同步的问题。但是如果多个线程同时对临界资源进行写操作(即改变临界资源的某些值),这时就会出现问题。
  读写锁相较于自旋锁和互斥锁来说,对于“多读少写”的环境性能提升很明显,因为我们允许多线程读取资源!
计算机基础——操作系统:提升


5、线程同步之条件变量
计算机基础——操作系统:提升
计算机基础——操作系统:提升
计算机基础——操作系统:提升


6、线程同步方法总结
计算机基础——操作系统:提升
计算机基础——操作系统:提升
计算机基础——操作系统:提升


7、使用fork系统调用创建进程
计算机基础——操作系统:提升
计算机基础——操作系统:提升


7、进程同步之共享内存
计算机基础——操作系统:提升
计算机基础——操作系统:提升
计算机基础——操作系统:提升
计算机基础——操作系统:提升
计算机基础——操作系统:提升
计算机基础——操作系统:提升
计算机基础——操作系统:提升


9、进程同步之Unix套接字
计算机基础——操作系统:提升
计算机基础——操作系统:提升
计算机基础——操作系统:提升
计算机基础——操作系统:提升