求职之操作系统
来源:互联网 发布:淘宝店铺背景音乐代码 编辑:程序博客网 时间:2024/05/29 18:07
1.进程通信机制
2.3.1 管道
2.3.2 消息队列
2.3.3 共享内存
2.3.4 信号量
2.线程同步机制
线程同步机制:互斥量、信号量、读写锁、条件变量
一、互斥量(mutex)
互斥量本质上是一把锁,在访问共享资源前对互斥量进行加锁,在访问完成后释放互斥量上的锁。
对互斥量进行加锁以后,任何其它试图再次对互斥量加锁的线程将会被阻塞直到当前线程释放该互斥锁。如果释放互斥锁时有多个线程阻塞,所有在该互斥锁上的阻塞线程都会变成可运行状态,第一个变为运行状态的线程可以对互斥量加锁,其它线程将会看到互斥锁依然被锁住,只能回去再次等待它重新变为可用。在这种情况下,每次只有一个线程可以向前执行。
二、信号量(semaphore)
互斥量只能用于一个资源的互斥访问,它不能实现多个资源的多线程互斥问题。信号量可以实现多个同类资源的多线程互斥和同步。当信号量为单值信号量是,也可以完成一个资源的互斥访问。
三、读写锁
读写锁与互斥量类似,不过读写锁允许更高的并行性。互斥量要么是锁住状态要么是不加锁状态,而且一次只有一个线程可以对其加锁。
读写锁可以由三种状态:读模式下加锁状态、写模式下加锁状态、不加锁状态。一次只有一个线程可以占有写模式的读写锁,但是多个线程可以同时占有读模式的读写锁。
在读写锁是写加锁状态时,在这个锁被解锁之前,所有试图对这个锁加锁的线程都会被阻塞。当读写锁在读加锁状态时,所有试图以读模式对它进行加锁的线程都可以得到访问权,但是如果线程希望以写模式对此锁进行加锁,它必须阻塞直到所有的线程释放读锁。虽然读写锁的实现各不相同,但当读写锁处于读模式锁住状态时,如果有另外的线程试图以写模式加锁,读写锁通常会阻塞随后的读模式锁请求。这样可以避免读模式锁长期占用,而等待的写模式锁请求一直得不到满足。
读写锁非常适合于对数据结构读的次数远大于写的情况。当读写锁在写模式下时,它所保护的数据结构就可以被安全地修改,因为当前只有一个线程可以在写模式下拥有这个锁。当读写锁在读状态下时,只要线程获取了读模式下的读写锁,该锁所保护的数据结构可以被多个获得读模式锁的线程读取。
读写锁也叫做共享-独占锁,当读写锁以读模式锁住时,它是以共享模式锁住的;当他以写模式锁住时,它是以独占模式锁住的。
四、条件变量(condition)和监视器(monitor)
条件变量与互斥量一起使用时,允许线程以无竞争的方式等待特定的条件发生。
互斥量和信号量的区别
1. 互斥量用于线程的互斥,信号量用于线程的同步。
这是互斥量和信号量的根本区别,也就是互斥和同步之间的区别。
互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。
同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源
以上区别是主要想记住的。
note:信号量可以用来实现互斥量的功能
2. 互斥量值只能为0/1,信号量值可以为非负整数。
也就是说,一个互斥量只能用于一个资源的互斥访问,它不能实现多个资源的多线程互斥问题。信号量可以实现多个同类资源的多线程互斥和同步。当信号量为单值信号量是,也可以完成一个资源的互斥访问。
3. 互斥量的加锁和解锁必须由同一线程分别对应使用,信号量可以由一个线程释放,另一个线程得到。
3.并发 。并行
4.牛客网刷题总结
- 虚拟存储的容量
5.操作系统执行可执行程序时,内存分配情况
2、堆区(heap)— 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。
3、全局区(静态区)(static)—全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放
4、文字常量区 —常量字符串就是放在这里的。程序结束后由系统释放
5、程序代码区(text)—存放函数体的二进制代码。
- 求职之操作系统
- 求职笔记-操作系统-死锁
- 求职笔记-操作系统-缓冲区溢出
- 程序员求职攻略(《程序员面试笔试宝典》)之操作系统(线程和进程的区别)?
- 程序员求职之道(《程序员面试笔试宝典》)之操作系统(线程和进程的区别)?
- 程序员求职之道(《程序员面试笔试宝典》)之操作系统(内核线程和用户线程的区别)
- 程序员求职之道(《程序员面试笔试宝典》)之操作系统(内核线程和用户线程的区别)
- 程序员求职之道(《程序员面试笔试宝典》)之操作系统(线程和进程的区别)?
- 求职笔记-操作系统-进程与线程
- 求职之路
- 求职之路
- 求职之路
- 程序员求职之路---
- 求职之路
- 应届毕业生求职之我见
- 求职之路
- 毕业生求职之我见
- 求职之战
- oracle存储过程的动态游标的简单例子
- 彻底删除mathtype
- CCNU 2016 个人排位赛 0 (预热)
- ios 使用正则表达式的邮箱,手机号码,身份证号验证的快捷方式
- 欢迎使用CSDN-markdown编辑器
- 求职之操作系统
- Android ORM 框架之 greenDAO 使用心得
- 一、C/C++ 概述
- Unity3d 脚本的生命周期
- 2068. 【2016.10.5NOIP普及模拟】zy送画
- 给 Android 开发者的 RxJava 详解
- HDU 5918 Sequence I CCPC 长春 暴力求解
- C++编程入门系列之前言
- 【智障题系列A】实数二分