当前位置:  技术问答>linux和unix

使用TSL命令实现进程同步和互斥来防止竞争条件!

    来源: 互联网  发布时间:2015-06-07

    本文导语:  最近,我在学习操作系统的相关理论,主要看的是机工的《现在操作系统》一书,该书介绍了几种曾经出现的几种防止竞争条件的方法,当然也详细介绍了目前流行的信号量方法,但是我觉得: 在信号量方法中如果...

最近,我在学习操作系统的相关理论,主要看的是机工的《现在操作系统》一书,该书介绍了几种曾经出现的几种防止竞争条件的方法,当然也详细介绍了目前流行的信号量方法,但是我觉得:
在信号量方法中如果用TSL命令来代替P、V操作,就操作系统就可以不用关中断来检查信号量,只要进程使用TSL命令对共享的信号量进行读写,如果复制到寄存器中的值为0,则该进程进入临界区,如果非0则该进程sleep,当进程离开临界区时,执行一条汇编命令将共享的信号量置为零,并唤醒被阻塞的进程,这样就实现了互斥,同步的实现类似,只是将共享的信号量置零的命令放到需同步的进程中去就行了!

不知我的想法是否正确,请各位前辈、大虾多提宝贵意见!谢谢!

|
使用TSL指令实现对临界区的同步互斥与信号量P、V操作的方法是差别比较大的两种方法。
TSL指令通过CPU锁内存总线来实现读写操作原子性。
但它的缺点是忙等待。
而信号量可以通过睡眠来保证不浪费CPU。但检测、修改信号量以及使进程睡眠的操作需要关中断,只几条指令不会有什么副作用。
如果是多CPU,就需要对每个信号量有一个锁变量保护了。
TSL指令可以用来确保同一时刻只一个CPU在对信号量操作。
这里使用TSL是来防止几个CPU同时访问信号量的,与生产者或消费者使用忙等待来等待临界区是不同的。
信号量操作只需几个微秒,而生产者消费者可能需要任意长时间。

|
对于单CPU的系统,如果P、V操作在KERNEL中实现,本身应该是原语,无需要再使用TSL实现。

|
对的

    
 
 

您可能感兴趣的文章:

  • 进程对串口读写时使用互斥机制吗?
  • 线程里互斥和条件变量一起使用的问题,有点迷惑.
  • 请教linux irq 中断能使用mutex互斥锁吗?
  • 使用swap指令和Test and set指令设计一个解决N个进程互斥问题的算法
  • Linux下使用C++互斥访问文件+消息队列
  • 请教高人:同一个套接字(做客户端)连接到server后在不同子进程里使用能否不采取互斥措施收发?
  • 关于pthread_wait和互斥锁配合的使用问题
  • 线程中互斥量的使用问题
  • 条件变量和互斥量结合的使用问题
  • 互斥量mutex的简单使用(实例讲解)
  • 急求结果!!假设一个有两个元素的信号量集S,表示了一个磁带驱动器系统,其中进程1使用磁带机A,进程2同时使用磁带机A和B,进程3使用磁带机B。
  • 使用ps命令,如何使用系统命令根据进程名称获取进程和子进程的ID?除了ps,还有其它系统命令的办法吗?谢谢。
  • 怎么打开一个进程并得到这个进程内存使用的信息?
  • fork一个子进程后在打开一个文件,如何在子进程中使用这个打开的文件描述符号
  • linux进程(线程)运行过程中如何获取本进程当前的内存使用状况,统计信息?
  • 如何实现这样的API,可同时被不同的进程/线程使用,但是又不区分进程/线程?
  • 如何查看某个进程的cpu使用和内存使用情况????
  • HTML教程 iis7站长之家
  • 如何使用另外进程的socket
  • [急]linux对于c 如何获得一个进程及其子进程从开始到结束 它的最大CPU% MEM%使用率
  • 子进程用_exit退出,父进程为什么就不能让stdout使用缓存呢?
  • AIX系统中不使用lsof,还有没有其他命令可以知道端口是被那个进程使用
  • 进程间通信:pthread_cond使用在线程间,我要进程间条件同步(没有情缘关系的进程),采用什么方呢?也就是说我要在UNIX实现WIN32上命名Event的功能
  • 请问在 linux 下如何使用 execl() 调用另一个多进程的程序?
  • 计算进程的内存使用量应该使用/proc/self/statm哪几个量相加表示?
  • 怎么查一个特定进程使用的端口号啊
  • 大家好,我想问下有人用过"linux进程的内存使用解析"中推荐使用的"Ben Maurer写的perl脚本"查看内存么
  • 有人研究 或者 使用 实时进程 吗?请进来好吗?
  • 请问在UNIX上如何看一个进程的内存使用情况?
  • 关于使用Ptrace系统调用监控进程问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • netfilter中可以使用什么同步机制?
  • oracle10g全文索引自动同步语句使用方法
  • 请问在单进程,多线程程序里,线程间使用IPC的信号量来同步,能行吗?
  • 让你同步使用Windows 和Linux andLinux
  • GTK使用空闲处理函数解决线程同步时出现的一个诡异现象
  • 使用Barrier来控制线程同步示例
  • java多线程编程之使用Synchronized块同步变量
  • java多线程编程之使用Synchronized块同步方法
  • 如何使用信号灯实现两个任务的同步?
  • 使用SSIS创建同步数据库数据任务的方法
  • c#实现数据同步的方法(使用文件监控对象filesystemwatcher)
  • java多线程编程之使用Synchronized关键字同步类方法
  • mysql中使用UDF自动同步memcached效率笔记
  • 使用异步方式调用同步方法(实例详解)
  • c#线程同步使用详解示例
  • 基于Java回顾之多线程同步的使用详解
  • C++ I/O 成员 tellg():使用输入流读取流指针
  • 在测试memset函数的执行效率时,分为使用Cash和不使用Cash辆种方式,该如何控制是否使用缓存?
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • 求ibm6000的中文使用手册 !从来没用过服务器,现在急需使用它,不知如何使用! 急!!!!!
  • Python不使用print而直接输出二进制字符串
  • 请问:在使用oracle数据库作开发时,是使用pro*c作开发好些,还是使用库函数如oci等好一些啊?或者它们有什么区别或者优缺点啊?
  • Office 2010 Module模式下使用VBA Addressof
  • c#中SAPI使用总结——SpVoice的使用方法
  • windows下tinyxml.dll下载安装使用(c++解析XML库)
  • 使用了QWidget的程序,如何使用后台程序启动它?
  • tcmalloc内存泄露优化c++开源库下载,安装及使用介绍
  • 共享内存一般是怎么使用的,是同消息队列配合使用么
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • Jsp可否使用带有GUI的JavaBean,如何使用?
  • 使用libpcap读取tcpdump抓取的文件并解析c代码实例


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3