小编smw*_*dia的帖子

为什么Linux不通过TSS使用硬件上下文切换?

我读了以下声明:

x86架构包括称为任务状态段(TSS)的特定段类型,用于存储硬件上下文.尽管Linux不使用硬件上下文切换,但它仍然被迫为系统中的每个不同CPU设置TSS.

我想知道:

  • 为什么Linux不使用硬件支持进行上下文切换?
  • 硬件方法不是比软件方法快得多吗?
  • 是否有任何操作系统可以利用硬件上下文切换?Windows使用它吗?

最后一如既往,感谢您的耐心和回复.

- - - - - -添加 - - - - - - -

http://wiki.osdev.org/Context_Switching得到了一些解释.

像我这样迷茫的人可以看看它.8 ^)

linux x86 low-level linux-kernel

39
推荐指数
3
解决办法
1万
查看次数

呼叫门,中断门,陷阱门之间的区别?

我正在研究英特尔保护模式.我发现Call Gate,Interrupt Gate,Trap Gate几乎是一样的.事实上,除了Call Gate具有参数计数器的字段,并且这3个门具有不同的类型字段,它们在所有其他字段中是相同的.

至于它们的功能,它们都用于将代码控制转移到某些代码段中的某些过程.

我很想知道,因为这3个门都包含跨权限边界调用所需的信息.为什么我们需要3种呢?不是一个就够好吗?

感谢您的时间和回应.

更新1

相关问题:何时使用中断门或陷阱门?

更新2

今天我想出了这个想法:

不同的目的,不同的门,以及不同的CPU行为细节进行.如IF标志处理.

cpu x86 operating-system processor interrupt

39
推荐指数
3
解决办法
2万
查看次数

"HttpContext.Current"属性和相关内容的跨线程用法

我从<Essential ASP.NET with C#中的示例>中读取以下语句:

另一个有用的属性是HttpContext类的静态Current属性.此属性始终指向要提供服务的请求的HttpContext类的当前实例.如果您正在编写将从页面或其他管道类中使用的辅助类,并且可能因任何原因需要访问上下文,这可能很方便.通过使用静态Current属性来检索上下文,可以避免将对它的引用传递给辅助类.例如,清单4-1中显示的类使用上下文的Current属性来访问QueryString并将内容打印到当前响应缓冲区.请注意,要正确初始化此静态属性,调用方必须在原始请求线程上执行,因此如果您在请求期间生成了其他线程来执行工作,则必须注意自己提供对上下文类的访问.

我想知道大胆部分的根本原因,有一件事导致另一件事,这是我的想法:

我们知道一个进程可以有多个线程.这些线程中的每一个分别具有它们自己的堆栈.这些线程还可以访问共享内存区域堆.

然后,根据我的理解,堆栈是存储该线程的所有上下文的地方.对于访问堆中某些东西的线程,它必须使用指针,并且指针存储在其堆栈中.

因此,当我们进行一些跨线程调用时,我们必须确保所有必要的上下文信息都从调用者线程的堆栈传递到被调用者线程的堆栈.

但我不确定我是否犯了任何错误.

任何评论都将深表感谢.

谢谢.

这里堆栈仅限于用户堆栈.

asp.net multithreading

38
推荐指数
2
解决办法
2万
查看次数

如何用汇编语言检查EIP值?

我想用汇编语言获取EIP寄存器的当前值.那可能吗?

x86 assembly

34
推荐指数
3
解决办法
3万
查看次数

为什么cpu性能计数器保持报告0%cpu使用率?

PerformanceCounter cpuload = new PerformanceCounter();
cpuload.CategoryName = "Processor";
cpuload.CounterName = "% Processor Time";
cpuload.InstanceName = "_Total";
Console.WriteLine(cpuload.NextValue() + "%");
Run Code Online (Sandbox Code Playgroud)

输出总是0%,而cpuload.RawValue像是736861484375左右,发生了NextValue()什么?

c# performancecounter cpu-usage

31
推荐指数
2
解决办法
2万
查看次数

有关Visual Studio*.sln文件格式的问题

我正在使用文本编辑器手动编辑我的*.sln文件.我对以下几行感到困惑:

Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test2008", "Tools\Test2008\Test2008\Test2008.csproj", "{00B5EBB2-FDA5-4B23-BDC5-27E9F82E7C69}"
    ProjectSection(ProjectDependencies) = postProject
        {82B9BEC0-C9CC-4423-B54F-61E3C4AF53D8} = {82B9BEC0-C9CC-4423-B54F-61E3C4AF53D8}
    EndProjectSection
EndProject
Run Code Online (Sandbox Code Playgroud)

这有什么意义呢

{82B9BEC0-C9CC-4423-B54F-61E3C4AF53D8} = {82B9BEC0-C9CC-4423-B54F-61E3C4AF53D8}

声明?它看起来完全是多余的.

visual-studio-2008 visual-studio

31
推荐指数
3
解决办法
1万
查看次数

TCP双向还是全双工?

Bidirectional并且full-duplex是不同的概念.例如,Ethernet只有半双工,因为在特定时间,只有一个主机可以通过线路发送数据,并且它不能同时发送和接收数据.

因此,当我们通过以太网使用TCP时,我认为TCP只是双向或半双工.

在这里它说TCP是全双工的.为什么?

sockets tcp duplex

30
推荐指数
6
解决办法
3万
查看次数

OpenMappedExeConfiguration与OpenExeConfiguration

OpenExeConfiguration有2个重载:

OpenMappedExeConfiguration只有1个原型:

似乎(2)和(3)都可用于打开特定的配置文件而不是默认的app.config文件.

那么它们之间的区别是什么?什么时候用哪个?

为什么我们在(1)和(2)中分隔UserLevelConfig File Location,但是将它们组合在(3)中?

谢谢你的回复.

更新

我知道微软总是喜欢以多种方式做事.但它应该这样做是有原因的.在我的问题中,任何人都知道原因吗?我们需要赏金吗?)?

.net c# vb.net

29
推荐指数
2
解决办法
2万
查看次数

我们可以在网页中使用多个表单吗?

到目前为止,我遇到的所有网页最多只包含一个<form>标签.为什么不多个?我想不出为什么多个表单不能在同一个网页中共存的原因.

另外,要特定于ASP.NET - 为什么所有服务器控件都放在<form>标记内?为什么不把它们放在其他地方?

加,

我注意到在一个.aspx文件中,<form>标签具有runat = server属性,而普通的服务器控件Button也有一个.所以它似乎<form>也是一个服务器控件.但奇怪的是,我无法在Visual Studio工具箱中找到它.

forms asp.net

29
推荐指数
1
解决办法
7万
查看次数

说"Linux内核是先发制人"是什么意思?

我读到Linux内核是先发制人的,这与大多数Unix内核不同.那么,核心先发制人意味着什么呢?

一些类比或例子比纯粹的理论解释更好.

添加1 - 11:00 AM 12/7/2018

先发制人只是多任务的一种范式.还有其他像合作多任务.通过比较可以更好地理解.

linux linux-kernel multitasking

28
推荐指数
4
解决办法
2万
查看次数