引言: CPU在内核中运行时并不是处处不可抢占的,内核中存在一些空隙,在这时进行抢占是安全的,内核抢占补丁的基本原理就是将SMP可并行的代码段看成是可以进行内核抢占的区域。
摘要:使用最新补丁更新系统,有助于避免出现可用性、安全性和数据完整性风险。solaris 补丁管理器由 sun 推出,可以降低补丁管理工作的复杂性并减少时间消耗,从而降低此类风险。
solaris 补丁管理器是统一的补丁管理解决方案,提供的工具可以帮助您选择并安装补丁,提供的进程可以帮助您保持系统的补丁状态并尽量延长开机时间。
solaris 补丁管理器有两种版本,它们都基于相同的补丁分析引擎:
......
摘要:笔者是一个red hat linux系统管理员,管理着网络中几十台redhat linux 9主机。对于linux这样的开放式系统,和其他私有操作系统(windows/solais)相比, 发行商的短期支持策略使得网管经常需要上相应的网站看,是否有补丁,是否有了bug 修复,是否需要升级。千万不要报侥幸心理,否则一个shell脚本就可能拿下你的网站。套用一句名言:你的服务器永远可能在第二天被黑客接......
Linux操作系统内核抢占补丁的基本原理上一页 ...
arch/i386/kernel/entry.s:
preempt_count = 4 # 将task_struct中的flags用作preempt_count,flags被移到了别
的位置
ret_from_exception: # 从异常返回
#ifdef config_smp
get_current(%ebx)
movl processor(%ebx),%eax
shll $config_x86_l1_cache_shift,%eax
movl symbol_name(irq_stat)(,%eax),%ecx # softirq_active
testl symbol_name(irq_stat)+4(,%eax),%ecx # softirq_mask
#else
movl symbol_name(irq_stat),%ecx # softirq_active
testl symbol_name(irq_stat)+4,%ecx # softirq_mask
#endif
jne handle_softirq
#ifdef config_preempt
cli
incl preempt_count(%ebx) # 异常的入口没有禁止内核调度的指令,与ret_from_intr
匹配一下
#endif
entry(ret_from_intr) # 硬件中断的返回
get_current(%ebx)
#ifdef config_preempt
cli
decl preempt_count(%ebx) # 恢复内核抢占标志
#endif
movl eflags(%esp),%eax # mix eflags and cs
movb cs(%esp),%al
testl $(vm_mask | 3),%eax # return to vm86 mode or non-supervisor?
jne ret_with_reschedule
#ifdef config_preempt
cmpl $0,preempt_count(%ebx)
jnz restore_all # 如果preempt_count非零则表示禁止内核抢占
cmpl $0,need_resched(%ebx)
jz restore_all #
movl symbol_name(irq_stat)+irq_stat_local_bh_count cpu_indx,%ecx
addl symbol_name(irq_stat)+irq_stat_local_irq_count cpu_indx,%ecx
jnz restore_all
incl preempt_count(%ebx)
sti
call symbol_name(preempt_schedule)
jmp ret_from_intr # 新进程返回,返回ret_from_intr恢复抢占标志后再返回
#else
jmp restore_all
#endif
align
handle_softirq:
#ifdef config_preempt
cli
get_current(%ebx)
incl preempt_count(%ebx)
sti
#endif
call symbol_name(do_softirq)
jmp ret_from_intr
align
...
下一页 摘要:什么是内核
内核是 linux 系统的核心,提供硬件抽象层、磁盘及文件系统控制、多任务并发管理等底层功能的系统部件。
什么是补丁
linux 内核是由 kernel 小组 (http://www.kernel.org) 维护的,他们在首页提供最新稳定版的内核源代码下载地址。这是原始的纯净内核代码。
如上所述,出于种种原因,一般要对原始内核进行修改。而修改源代码的工作是由打补丁实现的,每......