找到 2047 篇文章 关于操作系统

硬件同步

Arnab Chakraborty
更新于 2019年10月17日 09:18:41

14K+ 浏览量

在硬件同步中,我们探索了几个用于解决临界区问题的解决方案,这些解决方案使用了从基于硬件到基于软件的 API 等各种技术,这些 API 可供应用程序程序员使用。这些解决方案基于锁定的前提;但是,此类锁的设计可能非常复杂。这些硬件功能可以简化任何编程任务并提高系统效率。在这里,我们介绍了一些许多系统上可用的简单硬件指令,并展示了如何有效地使用它们来解决临界区问题。如果我们能够阻止在修改共享变量时发生中断。临界区问题可能…… 阅读更多

Windows 线程的数据结构

Arnab Chakraborty
更新于 2019年10月17日 09:10:35

536 浏览量

Windows 实现 Windows API,它是 Microsoft 操作系统系列(Windows 98、NT、2000 和 XP 以及 Windows 7)的主要 API。基本上,Windows 应用程序作为单独的进程运行,并且每个进程可能包含一个或多个线程。此外,Windows 使用一对一映射,其中每个用户级线程都映射到一个关联的内核线程。线程的一般组件包括 - 唯一标识线程的线程 ID 一组表示处理器状态的寄存器一个用户堆栈,在线程以用户模式运行时使用,以及一个内核…… 阅读更多

轻量级进程 (LWP)

Arnab Chakraborty
更新于 2019年10月17日 09:07:48

3K+ 浏览量

许多系统实现多对多或两级模型,在用户线程和内核线程之间放置一个中间数据结构。此数据结构(通常称为轻量级进程或 LWP)如下面的图所示。对于用户线程库,LWP 似乎是一个虚拟处理器,应用程序可以在其上调度用户线程以运行。每个轻量级进程都附加到一个内核线程,并且操作系统将内核线程调度到物理处理器上运行。如果内核线程阻塞(例如,在等待 I/O 时),则 LWP 也将阻塞…… 阅读更多

调度器激活

Arnab Chakraborty
更新于 2019年10月17日 09:05:22

2K+ 浏览量

用户线程库和内核之间通信的一种技术称为调度器激活。它的工作原理如下:内核为应用程序提供一组虚拟处理器 (LWP),并且应用程序可以在可用的虚拟处理器上调度用户线程。此外,内核必须通知应用程序某些事件。此过程称为上行调用。上行调用由线程库使用上行调用处理程序处理,并且上行调用处理程序必须在虚拟处理器上运行。触发上行调用的一个事件发生在应用程序线程即将阻塞时。在这种情况下,…… 阅读更多

线程局部存储 (TLS)

Arnab Chakraborty
更新于 2019年10月17日 09:03:18

804 浏览量

线程共享其所属进程的数据。此数据共享提供了多线程编程的优势之一。但是,在某些情况下,每个线程可能需要其自己的某些数据的副本。此类数据称为线程局部存储(或 TLS)。例如,在事务处理系统中,我们可能会在单独的线程中为每个事务提供服务。每个事务可能会分配一个唯一的标识符。为了将每个线程与其唯一的标识符关联起来,我们可以使用线程局部存储。很容易将 TLS 与局部变量混淆。仅在单个函数调用期间,局部变量才可见,而 TLS…… 阅读更多

什么是线程取消?

Arnab Chakraborty
更新于 2020年1月31日 11:07:24

5K+ 浏览量

在线程完成之前终止线程称为线程取消。例如,如果多个线程同时搜索数据库,并且一个线程返回结果,则可能会取消其余线程。另一种情况可能是当用户按下 Web 浏览器上的按钮以停止网页进一步加载时。通常,使用多个线程加载网页 - 每个图像都在单独的线程中加载。当用户在浏览器上按下停止按钮时,将取消加载页面所有线程。要…… 阅读更多

什么是默认信号处理程序?

Arnab Chakraborty
更新于 2019年10月17日 09:00:01

1K+ 浏览量

信号是发送到程序的软件中断,指示已发生重要事件。信号可以通过以下两种可能的处理程序之一进行处理:默认信号处理程序用户定义的信号处理程序内核在处理该信号时,每个信号都与一个默认信号处理程序相关联。脚本或程序在收到信号时执行的操作称为默认操作。默认信号处理程序处理以下类型的不同默认操作。一些可能的默认操作是 - 终止进程。忽略信号。转储核心。它会创建一个名为 core 的文件,其中包含…… 阅读更多

什么是用户定义的信号处理程序?

Arnab Chakraborty
更新于 2020年1月31日 11:05:12

913 浏览量

信号是发送到程序的软件中断,指示已发生重要事件。信号可以通过以下两种可能的处理程序之一进行处理:默认信号处理程序用户定义的信号处理程序用户定义的信号处理程序可以覆盖此默认操作,该操作用于处理信号。信号以不同的方式处理。某些信号(例如更改窗口大小)将被简单地忽略;其他信号(例如非法内存访问)通过终止程序来处理。信号处理程序函数可以具有任何名称,但必须具有返回类型 void 并且必须具有一个 int 参数。示例 - …… 阅读更多

信号和信号处理

Arnab Chakraborty
更新于 2019年10月17日 08:55:35

4K+ 浏览量

信号是发送到程序的软件中断,指示已发生重要事件。这些事件可以从用户请求到非法内存访问错误不等。一些信号,例如中断信号,指示用户已要求程序执行不在常规控制流中的操作。根据信号源和事件被信号的原因,信号可以是同步的或异步的。所有信号,无论是同步的还是异步的,都遵循相同的模式 - 特定事件的发生会生成信号。接下来,信号将被传递…… 阅读更多

POSIX 线程库

Arnab Chakraborty
更新于 2019年10月17日 08:49:29

878 浏览量

Pthreads 指的是 POSIX 标准 (IEEE 1003.1c),它定义了用于线程创建和同步的 API。这定义了线程行为的规范,而不是实现。规范可以由操作系统设计人员以他们希望的任何方式实现。因此,许多系统实现了 Pthreads 规范;大多数是 UNIX 类型系统,包括 Linux、Mac OS X 和 Solaris。尽管 Windows 本身不支持 Pthreads,但有一些适用于 Windows 的第三方实现可用。图 4.9 中所示的 C 程序演示了用于构建多线程程序的基本 Pthreads API,该程序在单独的线程中计算非负整数的总和。单独的线程…… 阅读更多

广告