c****n 发帖数: 21367 | 1 多谢各位大侠指点,先预祝新春佳节快乐 :)
我不是CS专业的,也没有学过operating system这门课,一直对
一个事情比较好奇,就是system calls是怎么实现的。
(linux kernel相关的书家里有,没有带过来,看也有点看不懂//blush)
系统已经在跑了,我写一个应用程序,包含一些头文件就能
调用系统提供的接口。那我的程序是怎么和系统内核交互的呢?
我的编译器怎么能告诉我的程序,运行到调用的时候跑去哪儿、用
什么方式取得系统资源呢?
比如说我写一个socket程序,调用了系统的socketcall(),
用blocked receive方法,系统是怎么把驱动那边收到的信息
送给我的程序的呢?通知可以是signaling,那怎么给我的程序
取走呢?如何保证万一我没取走,也能知道且及时reclaim memory?
另一个问题是,如果在用户态写一个程序,有办法设计一个接口,
使得其他程序也能调用并使用其资源么?假设其他程序不知道这个提供
接口程序的设计细节。
问题比较低级,还请多多指教,谢谢啊。 |
N****w 发帖数: 21578 | 2 http://linux-security.cn/ebooks/ulk3-html/0596005652/understandlk-CHP-10-SECT-2.html
blocked receive 就是说没数据的话你的程序调用的函数就不会返回
【在 c****n 的大作中提到】 : 多谢各位大侠指点,先预祝新春佳节快乐 :) : 我不是CS专业的,也没有学过operating system这门课,一直对 : 一个事情比较好奇,就是system calls是怎么实现的。 : (linux kernel相关的书家里有,没有带过来,看也有点看不懂//blush) : 系统已经在跑了,我写一个应用程序,包含一些头文件就能 : 调用系统提供的接口。那我的程序是怎么和系统内核交互的呢? : 我的编译器怎么能告诉我的程序,运行到调用的时候跑去哪儿、用 : 什么方式取得系统资源呢? : 比如说我写一个socket程序,调用了系统的socketcall(), : 用blocked receive方法,系统是怎么把驱动那边收到的信息
|
q**d 发帖数: 16 | 3 I googled one for you about system calls - it is a good summary.
http://www.linux-tutorial.info/modules.php?name=MContent&pageid=88
IMHO, you still need to read a good os (not kernel) book to understand the
concept of scheduling, context switch between kernel mode/user mode, IPC, .
..
比如说我写一个socket程序,调用了系统的socketcall(),
用blocked receive方法,系统是怎么把驱动那边收到的信息
送给我的程序的呢?kernel synchronization mechanism
通知可以是signaling,那怎么给我的程序
取走呢?data copy from kernel space to user space
如何保证万一我没取走,也能知道且及时reclaim memo |
c****n 发帖数: 21367 | 4 thanks alot. your generous comments cleared my questions.
wish you a happy new year! :)
.
【在 q**d 的大作中提到】 : I googled one for you about system calls - it is a good summary. : http://www.linux-tutorial.info/modules.php?name=MContent&pageid=88 : IMHO, you still need to read a good os (not kernel) book to understand the : concept of scheduling, context switch between kernel mode/user mode, IPC, . : .. : 比如说我写一个socket程序,调用了系统的socketcall(), : 用blocked receive方法,系统是怎么把驱动那边收到的信息 : 送给我的程序的呢?kernel synchronization mechanism : 通知可以是signaling,那怎么给我的程序 : 取走呢?data copy from kernel space to user space
|