由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 问道OS的面试题。
相关主题
问几个multithreading的问题发我遇到的面试题FLG
两个进程之间能不能share code?Java 面试题
U电面经历amazon和synopsys怎么选择
问一个进程调度的问题。facebook google zynga microsoft twitter 在大家心目中排名如何
求大神解释下copy on writeSAS和Synopsis去哪家公司职业前途比较好?
非常好的总结面试题准备,分享一下!问道多线程的简单题目
问一道c++面试题Amazon 第一电面
贴两道面试题失败的电话面试及面试问题
相关话题的讨论汇总
话题: fork话题: 进程话题: linux话题: os话题: child
进入JobHunting版参与讨论
1 (共1页)
r****o
发帖数: 1950
1
【 以下文字转载自 Linux 讨论区 】
发信人: roufoo (五经勤向窗前读), 信区: Linux
标 题: 问道OS的面试题。
发信站: BBS 未名空间站 (Thu Apr 22 22:03:27 2010, 美东)
fork一个进程的时候,内核里面发生了什么?
我前天被问到这道题目,我只知道子进程会拷贝父进程的内核空间,结果答的很烂。请
问这里的大牛,这道题应该怎么回答比较好?
多谢!
k***e
发帖数: 556
2
detailed answer can be found in understanding linux kernel
r****o
发帖数: 1950
3
大侠你怎么什么都精通啊,呵呵。

【在 k***e 的大作中提到】
: detailed answer can be found in understanding linux kernel
k***e
发帖数: 556
4
不算精通
这些都是死记硬背
你必须知道fork后那些和parent share 哪些是child特有的
真的牛人可以从汇编跳转 设置ldt gdt什么的这些开始讲起 里面的东西海了去了
没做过项目很容易被人问露馅
问到os方面的问题 不熟悉就承认 不然随随便便就被人问趴下

【在 r****o 的大作中提到】
: 大侠你怎么什么都精通啊,呵呵。
w*********l
发帖数: 1337
5
这个问题太笼统了,没什么信息量。内核里基本就是copy所有的进程相关的数据结构。

【在 r****o 的大作中提到】
: 【 以下文字转载自 Linux 讨论区 】
: 发信人: roufoo (五经勤向窗前读), 信区: Linux
: 标 题: 问道OS的面试题。
: 发信站: BBS 未名空间站 (Thu Apr 22 22:03:27 2010, 美东)
: fork一个进程的时候,内核里面发生了什么?
: 我前天被问到这道题目,我只知道子进程会拷贝父进程的内核空间,结果答的很烂。请
: 问这里的大牛,这道题应该怎么回答比较好?
: 多谢!

w*********l
发帖数: 1337
6
linux不用段,所以段表都是不动的--只有一个表,但是这题没限定是linux,所以属于
比较扯的那种open题目。这里面比较有意思的是copy页表设置copy on write。如果是
我的话可能会问问cow可能的实现方法。另外一个稍微比较没意思的问点是,如果让你
做决定,parent和child哪个先从系统调用返回,为什么。

【在 k***e 的大作中提到】
: 不算精通
: 这些都是死记硬背
: 你必须知道fork后那些和parent share 哪些是child特有的
: 真的牛人可以从汇编跳转 设置ldt gdt什么的这些开始讲起 里面的东西海了去了
: 没做过项目很容易被人问露馅
: 问到os方面的问题 不熟悉就承认 不然随随便便就被人问趴下

w******1
发帖数: 520
7
google 出来的一个解释
NAME
fork - create a child process
SYNOPSIS
#include
#include
pid_t fork(void);
DESCRIPTION
fork creates a child process that differs from the parent process only in
its PID and PPID, and in the fact that resource utilizations are set to 0.
File locks and pending signals are not inherited.
Under Linux, fork is implemented using copy-on-write pages, so the only
penalty incurred by fork is the time and memory required to duplicate the
parent's page tables, a
w******1
发帖数: 520
8
GOOGLE 出来的:
fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父
进程, 具有良好的并发性,但是二者之间的通讯需要通过专门的通讯机制,如:pipe
,popen&pclose、协同进程、fifo,System V IPC(消息队列、信号量和共享内存)机
制等, 另外通过fork创建子进程系统开销很大,需要将上面描述的每种资源都复制一
个副本。这样看来,fork是一个 开销十分大的系统调用,这些开销并不是所有的情况
下都是必须的,比如某进程fork出一个子进程后,其子进程仅仅是为了调用exec执行另
一个执行文件,那么在fork过程中对于虚存空间的复制将是一个多余的过程(由 于
Linux中是采取了copy-on-write技术,所以这一步骤的所做的工作只是虚存管理部分的
复制以及页表的创建 ,而并没有包括物理也面的拷贝);
vfork系统调用不同于fork,用vfork创建的子进程共享地址空间,也就是说子进程完全
运行在父进程的地址空间上,子进程对虚拟地址空间任何数据的修改同样为父进程所见
。但是用 vfork创建子进程后,父进程会被阻塞直到子进
s******s
发帖数: 3694
9
汇编跳转的, 你看现在有几个赚大钱的?
没用的,现在的产业分工没几个公司需要这些东西了。最多把 bootup 的几段搞清楚就
够了

【在 k***e 的大作中提到】
: 不算精通
: 这些都是死记硬背
: 你必须知道fork后那些和parent share 哪些是child特有的
: 真的牛人可以从汇编跳转 设置ldt gdt什么的这些开始讲起 里面的东西海了去了
: 没做过项目很容易被人问露馅
: 问到os方面的问题 不熟悉就承认 不然随随便便就被人问趴下

s******s
发帖数: 3694
10
赞勤奋, COW 确实是很重要, 关键是这种想法

pipe

【在 w******1 的大作中提到】
: GOOGLE 出来的:
: fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父
: 进程, 具有良好的并发性,但是二者之间的通讯需要通过专门的通讯机制,如:pipe
: ,popen&pclose、协同进程、fifo,System V IPC(消息队列、信号量和共享内存)机
: 制等, 另外通过fork创建子进程系统开销很大,需要将上面描述的每种资源都复制一
: 个副本。这样看来,fork是一个 开销十分大的系统调用,这些开销并不是所有的情况
: 下都是必须的,比如某进程fork出一个子进程后,其子进程仅仅是为了调用exec执行另
: 一个执行文件,那么在fork过程中对于虚存空间的复制将是一个多余的过程(由 于
: Linux中是采取了copy-on-write技术,所以这一步骤的所做的工作只是虚存管理部分的
: 复制以及页表的创建 ,而并没有包括物理也面的拷贝);

l*******y
发帖数: 1498
11
没必要看understanding linux kernel,很多地方都讲的太详细。
linux kernel development就很好,没那么多细节,但是重要的东西都有了。

【在 k***e 的大作中提到】
: detailed answer can be found in understanding linux kernel
r****o
发帖数: 1950
12
多谢。是不是child先从系统调用返回比较好。因为child可能会共用parent的内存空间
(如果没有write操作的话)。

【在 w*********l 的大作中提到】
: linux不用段,所以段表都是不动的--只有一个表,但是这题没限定是linux,所以属于
: 比较扯的那种open题目。这里面比较有意思的是copy页表设置copy on write。如果是
: 我的话可能会问问cow可能的实现方法。另外一个稍微比较没意思的问点是,如果让你
: 做决定,parent和child哪个先从系统调用返回,为什么。

w*********l
发帖数: 1337
13
个人认为啊,看lkd还不如看操作系统教科书。ulk还好,真做东西的话其实这本书讲的
还是不够细。

【在 l*******y 的大作中提到】
: 没必要看understanding linux kernel,很多地方都讲的太详细。
: linux kernel development就很好,没那么多细节,但是重要的东西都有了。

l*******y
发帖数: 1498
14
真做东西当然是不够的,不过对于找工作对付面试我觉得已经够了
lkd和专门的操作系统书还是不一样的吧,我觉得linux那个O(1) 的 process
scheduling algorithm 操作系统书里应该没有把(我也不确定),因为这个具体的实
现不同的OS算法不一样的吧。

【在 w*********l 的大作中提到】
: 个人认为啊,看lkd还不如看操作系统教科书。ulk还好,真做东西的话其实这本书讲的
: 还是不够细。

1 (共1页)
进入JobHunting版参与讨论
相关主题
失败的电话面试及面试问题求大神解释下copy on write
交通灯OO design哪道题在哪里可以找到??非常好的总结面试题准备,分享一下!
一道涉及OO,算法,多线程的设计题问一道c++面试题
爸说,没想到你就当了个程序员 (转载)贴两道面试题
问几个multithreading的问题发我遇到的面试题FLG
两个进程之间能不能share code?Java 面试题
U电面经历amazon和synopsys怎么选择
问一个进程调度的问题。facebook google zynga microsoft twitter 在大家心目中排名如何
相关话题的讨论汇总
话题: fork话题: 进程话题: linux话题: os话题: child