Linux 2.4与2.6进程调度与网络字节顺序详解

需积分: 0 0 下载量 159 浏览量 更新于2024-08-05 收藏 142KB PDF 举报
本资源是一份2008年期末考试试卷,专注于操作系统原理与实践II课程,涵盖了A卷的部分内容。主要讨论了以下几个知识点: 1. **孤儿进程**: 当一个父进程退出后,如果它还有未完成的子进程,这些子进程被称为孤儿进程。孤儿进程没有明确的父进程管理,Linux 2.4与2.6版本的内核处理孤儿进程的方式有所不同。在Linux 2.4中,父进程退出后,孤儿进程可能会立即结束,而在2.6版本中,内核引入了一个新的孤儿进程处理机制,孤儿进程会被初始化进程(PID为1)接管并进行清理。 2. **可靠信号**: 可靠信号是指信号可以安全地发送给进程,即使信号处理程序未捕获也不会丢失。Linux中,SIGRTMIN和SIGRTMAX之间的信号属于实时信号(Real-Time Signal),它们不会丢失,并且有优先级高于一般信号,用于处理紧急情况。 3. **网络字节顺序**: 在网络通信中,数据在传输时需要遵循网络字节顺序,即将多字节数据的高位字节放在低地址处,低位字节放在高地址处。这与内存中的自然字节顺序可能不同,因此在处理网络数据时,需要进行转换。 4. **封装例程(System Call Wrapper)**: 封装例程是一种简化编程接口的方式,它隐藏了底层系统的复杂性,使得用户可以直接调用库函数来执行系统调用,而无需了解底层细节。这样,应用程序可以在用户空间高效地操作系统服务。 5. **工作队列**: 工作队列是内核提供的一种机制,用于异步处理任务。它将工作提交到队列中,由内核线程(KThread)执行,可以避免阻塞主线程,提高系统的并发性和响应性。通过工作队列,代码可以在进程上下文中执行,享有更多的调度灵活性。 在计算题部分,涉及到的是i386体系结构的逻辑地址计算以及页面地址映射。考生需要根据给定的全局描述符表(GDT)、局部描述符表(LDT)、段选择子、页目录和页表信息,来计算逻辑地址到线性地址的转换,以及确定与线性地址相关的页目录项地址、页表项地址和物理地址。这要求对内存管理、虚拟地址映射等概念有深入理解。 这份试卷涵盖了操作系统核心概念和实践技能的测试,要求考生具备扎实的基础理论知识和实际应用能力。

以hive的角度检查语法: with cur_dim_comb as (SELECT DISTINCT t.dim_comb ,t.var_sub_class ,t.acc_value FROM gerp.cux_cst_data_alloc_his t WHERE t.top_var_type = '10' AND t.job_ver_id in (SELECT ver.job_ver_id AS p_job_ver_id FROM gerp.cux_cst_dist_jobs_all job INNER JOIN gerp.cux_cst_dist_jobs_vers_all ver ON job.job_id = ver.job_id )) select tp.bd_code --事业部编码 ,tp.bd_name --事业部名称 ,hp.ou_code --OU名称 ,hp.ou_name --OU编码 ,op.main_class_desc --差异大类 ,op.acc_value --科目代码 ,op.acc_desc --科目名称 ,op.dim_comb --区分维度 ,op.begin_amount --期初余额 ,op.accrual_amount --本期发生 ,op.balance_diff_alloc_amount --期末差异结存 ,op.var_sub_class ,op.main_class_value ,op.org_id ,op.period_name ,op.job_ver_id from (select up.* ,q1.* from (SELECT DISTINCT maincl.* ,t.* FROM t inner join (SELECT fv.flex_value ,fv.description FROM fv inner join fs on fv.flex_value_set_id = fs.flex_value_set_id AND fs.flex_value_set_name = 'CUX_CST_VARIANCE_TYPE' AND fv.enabled_flag = 'Y' AND fv.hierarchy_level = '2' AND fv.flex_value LIKE '10%' ) maincl on t.var_main_class = maincl.flex_value inner join cur_dim_comb on cur_dim_comb.var_sub_class = t.var_sub_class and cur_dim_comb.acc_value = t.acc_value WHERE 1 = 1 AND t.top_var_type = '10' AND t.job_ver_id in (SELECT ver.job_ver_id AS p_job_ver_id FROM gerp.cux_cst_dist_jobs_all job INNER JOIN gerp.cux_cst_dist_jobs_vers_all ver ON job.job_id = ver.job_id) ORDER BY maincl.description ,t.acc_value ,cur_dim_comb.dim_comb ) up inner join (SELECT t1.* ,SUM(t1.begin_amount) begin_amount ,SUM(t1.accrual_amount) accrual_amount ,SUM(t1.balance_diff_alloc_amount) balance_diff_alloc_amount FROM gerp.cux_cst_data_alloc_his t1 LEFT JOIN gerp.cux_cst_data_alloc_his t ON t1.top_var_type = '10' AND t1.var_sub_class = t.var_sub_class --p_var_sub_class AND t1.org_id = t.org_id --p_org_id AND t1.period_name = t.period_name --p_period_name AND t1.job_ver_id = t.job_ver_id --p_job_ver_id AND t1.acc_value = t.acc_value --p_acc_value WHERE t1.dim_comb in (select distinct dim_comb from cur_dim_comb) group by t1.org_id,t1.period_name,t1.job_ver_id,t1.var_sub_class,t1.acc_value ) q1 on q1.org_id = up.org_id --p_org_id AND q1.period_name = up.period_name --p_period_name AND q1.job_ver_id = up.job_ver_id --p_job_ver_id AND q1.var_sub_class = up.var_sub_class --p_var_sub_class AND q1.acc_value = up.acc_value --p_acc_value ) op

2023-05-26 上传