Operating system 信号量中的wait()是原子的

Operating system 信号量中的wait()是原子的,operating-system,semaphore,Operating System,Semaphore,我不熟悉操作系统。这个问题听起来可能有点愚蠢,但请帮助我理解它背后的概念。 让我们->一个信号量变量 现在让wait实现为 wait(S){ while S<=0 ; S--; } 等待{ 虽然SSScheduler不允许一个线程在无限时间内占用一个内核,但它是在时间切片上工作的,您认为在无限循环中执行的therad只能得到100纳秒,然后其他线程控制内核?明白了吗?但原子意味着什么。原子意味着您的“逻辑操作”将完成或失败…根据您的问题,它是正确的,不能中断,但在调度程序级别,

我不熟悉操作系统。这个问题听起来可能有点愚蠢,但请帮助我理解它背后的概念。 让我们->一个信号量变量 现在让wait实现为

wait(S){
  while S<=0 ;
  S--;

}
等待{

虽然SSScheduler不允许一个线程在无限时间内占用一个内核,但它是在时间切片上工作的,您认为在无限循环中执行的therad只能得到100纳秒,然后其他线程控制内核?明白了吗?但原子意味着什么。原子意味着您的“逻辑操作”将完成或失败…根据您的问题,它是正确的,不能中断,但在调度程序级别,即“技术操作”可以在时间段中分割。这有点难理解,但不要混淆逻辑操作和技术操作。信号量等待不是以如此粗糙的方式实现的,不管有多少CPU/内核可以访问信号量。执行将从等待线程中删除。'let wait(S)“作为轮询循环实现”与“让锤子用锯子实现”一样合理。调度程序不允许一个线程在无限时间内获取一个内核,它在时间切片上工作,您认为的线程将进入无限循环,执行时只得到100纳秒,然后其他线程控制内核?明白了吗?但原子意味着什么ns.atomic表示您的“逻辑操作”将完成或失败…根据您的问题,它是正确的,不能中断,但在调度程序级别,即“技术操作”可以在时间段中分割。这有点难理解,但不要混淆逻辑操作和技术操作。信号量等待不是以如此粗糙的方式实现的,不管有多少CPU/内核可以访问信号量。执行将从等待线程中删除。'let wait(S)“实现为轮询循环”与“让锤子用锯实现”一样合理。