最近的学习---一句话收获(备查用)(3)

来源:互联网 发布:国家电网 人工智能 编辑:程序博客网 时间:2024/05/17 00:01

1. 中断嵌套在返回的时候不会发生抢占。即使在2.6内核中也不会。进入interrupt之后,preempt-counter会变成大于0的(add_preempt_count(HARDIRQ_OFFSET)),所以无法抢占。
2.stime,utime等等。linux内核的时间测量,cpu利用率的计算,时钟中断里面时间的更新,profile优化
3.无论如何,nice系统调用都无法将普通进程变为实时的,优先级必在100以上。
4.自旋锁在up,smp,以及抢占,非抢占内核中的比较。中断为什么不能睡眠,中断为何不能缺页
5.x509的扩展选项
6.1)进程会请求OS的服务,所谓进程在运行大多时候,进程会请求OS做一些事情。(就是所谓的系统调用)OS在做这些事情的过程中,主控权在OS,它会利用职权顺便考虑调度的事情。
2)如果进程一直不请求OS做事情,OS会利用一些特殊的事件,掌握主控权,这种特殊的事件主要是中断和异常。中断会打断当前进程的运行,由OS控制进行中断处理,在这个过程中,OS通常也会顺便考虑调度的事情,异常也类似。
7.2.6 和2.4在处理缓冲区高速缓存的时候,方法截然不同,2.6内核将缓冲区高速缓存放到了页高速缓存里面,而2.4的内核则为之单独维护了一大堆“看起来很 美”的东西,比如哈希表,链表之类的,而且2.4内核一般的东西都是全局的,一上锁就是锁整体,怪不得它的稳定性好呢,这么小心翼翼,当然不会出问题了
8.聚集索引与非聚集索引;b+树因为只存储索引,故同样大小的磁盘可以存储更大索引,因此效率高,可以将索引常驻内存;b+树在索引的时候访盘次数比较少,而b-树比较多;b+树是索引树,b-树是查找搜索树
9.使用raw设备,以及raw设备的优劣
10.ext3,reiserfs,jfs,xfs的比较
11.大数乘法问题;二分法计算二进制倒置:x = (x & 0x55) << 1 | (x & 0xAA) >> 1;
                           x = (x & 0x33) << 2 | (x & 0xCC) >> 2;
                           x = x <<4 | x>>4;
12.论坛里面回答的问题
13.Each process supplied with a virtual multiprocessor machine.
Kernel allocates processors to address spaces.
User level threads system has complete control over scheduling.
Kernel notifies ULTS whenever it changes the number of processors; a user thread blocks or unblocks.-----------upcall
ULTS notifies kernel when application needs more or fewer processors.-----downcall
Three roles
As a vessel, or execution context, for running user-level threads, like a kernel thread.
As a notification to the ULTS of a kernel event.
As a data structure for saving state, etc.
Two execution stacks
Activation upcalls used for running threads and notifying events.
Note: UL threads are never directly resumed by the kernel.
14.Linux SMP结构既可以在多个CPU上并行运行多个进程,也可以在多个CPU上并行运行同一进程的多个线程。对于运行在多CPU上的LINUX来说,每个CPU 有一个自己的调度队列。当多个调度队列中的进程数相差超过一定的数值时,内核会自动进行调整,从而使得各CPU上的进程数保持均衡。另外需要说明的 是,Linux下的线程,相当于进程,因为它在内核中有自己的task_struct。其实线程与进程的唯一差别是,线程没有自己独立的虚存空间。也就是 说,如果一个进程创建了一个线程,那么新线程与老的主线程,就相当于两个共享虚存空间的进程。内核的调度程序是以task_struct为单位进行调度 的。
15.unix各大厂商都有不同实现,而且软件,硬件,服务三者一起提供,正如楼上所说IBM,SUN,HP的系统都是unix,分 别为AIX,Solaris,HP-UX,随便拿出来一个看看,全是巨猛地家伙,动不动就支持几百几千个cpu,windows行吗?以上是软件!再一 个,各大厂商的硬件架构都是自己的,向IBM的是Power系列处理器,SUN的是Sparc系列,hp的用安腾系列,哪个是小孩子玩的?以上是硬件!另 外,随便拉个服务器出来,都支持虚拟化,像IBM的分区,sun的容器,hp的最厉害,从粗到细提供全息虚拟化解决方案,当今虚拟化是大型企业的需求,更重要的原因,intel的x86本身就不支持虚拟化(最新的VT系列提供了小儿科支持),而windows只能在x86上跑,windows对虚拟化望而 却步,只能用软件支持(virtualpc vmware等),虚拟化方面,windows行吗?以上是企业级服务!综上,windows只能提供给中小企业。再看linux,它是开源的,可扩展性 极高,所以完全可以支持多平台,支持虚拟化(比如内核虚拟机kvm),linux的灵活性使得各大企业的服务可订制性提高,因此,如果你没有unix那么 猛烈的需求,又不想做得很差,那么就选linux吧