首页
社区
课程
招聘
[旧帖] 关于windows操作系统的几个问题 0.00雪花
发表于: 2016-9-22 00:45 2351

[旧帖] 关于windows操作系统的几个问题 0.00雪花

2016-9-22 00:45
2351
1.进程,调度是在哪里实现的?驱动么?驱动实现的是什么功能?向上提供接口?
2.同一台电脑不同程序的系统空间是不是都是一样的?比如加载的dll都是一样?还是进程一切换就重新加载dll?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 121
活跃值: (27)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
还有,夸进程读写是如何实现的?共享内存?
2016-9-22 01:25
0
雪    币: 2291
活跃值: (938)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
3
去看《Windows Internals》吧,或者看《Windows内核原理与实现》也行,你这些问题不是几句话讲的清楚的。
2016-9-22 08:43
0
雪    币: 62
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
1.进程,调度是在哪里实现的?驱动么?驱动实现的是什么功能?向上提供接口?
答:进程调度在操作系统的内核中实现,驱动是为了扩展内核功能才引出的,通过提供操作系统的驱动开发接口实现,原因是任何一个通用的操作系统都不能囊括存在的所有设备,因此要通过驱动来适配。此时操作系统就对驱动可以实现的功能进行了限定。相对shell,驱动程序属于内核的一部分,按照操作系统的要求为之提供服务,操作系统再为用户的应用程序提供服务。
2.同一台电脑不同程序的系统空间是不是都是一样的?比如加载的dll都是一样?还是进程一切换就重新加载dll?
答:有各自的空间,其中分为内核区和用户区,就是常见的ring0和ring3,这两个区使用处理器的方式是不一样的,一般ring0区是独占模式,ring3通过ring0提供的功能实现处理器分片,轮着使用。两个区的数据交换需要拷贝,不能直接访问。加载dll是共享文件映射而已,各自的地址空间各自安排,只是因为编译器和连接器的原因,这部分内容有一定的规律。进程切换只是获得和放弃内核资源的方式,严格的说处理器切换是以线程为单位的,进程确定数据和代码空间,线程是处理器资源分配的最小单位,线程也可以有自己的独立数据,那是通过其它手段实现的。dll载入一次后就一直保留,直到进程退出或显式的freelibrary。

还有,夸进程读写是如何实现的?共享内存?  
答:跨进程是没法读写的,进程间通信的方式很多,管道、信号量、共享内容等都是常见的手段,比如windows系统就提供了读写远程进程内存和创建远程线程的功能,但这需要从内核中进行支持,比如句柄复制之类的突破进程空间数据表示的局限。
2016-9-28 16:36
0
游客
登录 | 注册 方可回帖
返回
//