- 博客(17)
- 资源 (11)
- 收藏
- 关注
转载 [搜狐笔试]显示所有正确的括号匹配
题目: 编程实现所有括号的合法匹配。实例如下:输入 3输出 ((())) (()()) (())() ()(()) ()()() 解题思路:学名为:深度优先搜索(DFS) 这是看别人的文章得到的名称。。。 代码如下:#include "stdafx.h"#include "iostream"#include "stdio.h"#include#i
2013-10-23 15:31:18 641
转载 NoSQL 数据建模技术
全文译自墙外文章“NoSQL Data Modeling Techniques”,译得不好,还请见谅。这篇文章看完之后,你可能会对NoSQL的数据结构会有些感觉。我的感觉是,关系型数据库想把一致性,完整性,索引,CRUD都干好,NoSQL只干某一种事,但是牺牲了很多别的东西。总体来说,我觉得NoSQL更适合做Cache。下面是正文——NoSQL 数据库经常被用作很多非功能性的地方,如,扩展
2013-10-23 15:23:56 726
转载 linux2.4到linux2.6内核调度(10)
一个进程结束运行时,如果它的交互程度比父进程低(sleep_avg 较小),那么核心将在 sched_exit() 中对其父进程的 sleep_avg 进行调整,调整公式如下(以 child_sleep_avg 表示子进程的 sleep_avg):sleep_avg = sleep_avg*EXIT_WEIGHT/(EXIT_WEIGHT+1) + child_sleep_avg/(EXIT_
2013-10-08 12:48:27 663
转载 linux2.4到linux2.6内核调度(11)
当前 runqueue 中没有就绪进程了,则启动负载平衡从别的 cpu 上转移进程,再进行挑选(详见"调度器相关的负载平衡"); 如果仍然没有就绪进程,则将本 cpu 的 IDLE 进程设为候选。 在挑选出 next 之后,如果发现 next 是从 TASK_INTERRUPTIBLE 休眠中醒来后第一次被调度到(activated>0),调度器将根据 next 在就绪队列上等待的
2013-10-08 12:48:14 923
转载 linux2.4到linux2.6内核调度(9)
(NS_TO_JIFFIES((p)->sleep_avg) * MAX_BONUS / MAX_SLEEP_AVG) - MAX_BONUS/2如下图所示:再用这个 bonus 去减静态优先级就得到进程的动态优先级(并限制在 MAX_RT_PRIO和MAX_PRIO 之间),bonus 越小,动态优先级数值越大,优先级越低。也就是说,sleep_avg 越大,优先级也越高
2013-10-08 12:47:54 626
转载 linux2.4到linux2.6内核调度(7)
5) activated表示进程因什么原因进入就绪态,这一原因会影响到调度优先级的计算。activated 有四个值:-1,进程从 TASK_UNINTERRUPTIBLE 状态被唤醒; 0,缺省值,进程原本就处于就绪态; 1,进程从 TASK_INTERRUPTIBLE 状态被唤醒,且不在中断上下文中; 2,进程从 TASK_INTERRUPTIBLE 状态被唤醒,且在中断上
2013-10-08 12:46:40 659
转载 linux2.4到linux2.6内核调度(8)
图2:现在的current4. 新的运行时间片表现2.6 中,time_slice 变量代替了 2.4 中的 counter 变量来表示进程剩余运行时间片。time_slice 尽管拥有和 counter 相同的含义,但在内核中的表现行为已经大相径庭,下面分三个方面讨论新的运行时间片表现:1) time_slice 基准值和 counter 类似,进程的缺省时间片与
2013-10-08 12:46:31 761
转载 linux2.4到linux2.6内核调度(6)
两种时间单位 系统的时间是以 nanosecond(十亿分之一秒)为单位的,但这一数值粒度过细,大部分核心应用仅能取得它的绝对值,感知不到它的精度。 时间相关的核心应用通常围绕时钟中断进行,在 Linux 2.6 中,系统时钟每 1 毫秒中断一次(时钟频率,用 HZ 宏表示,定义为 1000,即每秒中断 1000 次,--2.4 中定义为 100,很多应用程序也仍然沿用 100 的时钟频率),
2013-10-08 12:45:32 739
转载 linux2.4到linux2.6内核调度(5)
调度系统代码结构 绝大多数调度系统的实现代码,包括 runqueue 结构的定义,都在[kernel/sched.c]文件中,这样做的目的是将所有调度系统的代码集中起来,便于更新和替换。除非特别注明,本文所引代码和函数实现均位于[kernel/sched.c]中。3. 改进后的 task_struct2.6 版的内核仍然用 task_struct 来表征进程,尽管对线程进行了优化,
2013-10-08 12:45:10 691
转载 linux2.4到linux2.6内核调度(4)
7) struct mm_struct *prev_mm保存进程切换后被调度下来的进程(称之为 prev)的 active_mm 结构指针。因为在 2.6 中 prev 的 active_mm 是在进程切换完成之后释放的(mmdrop()),而此时 prev 的 active_mm 项可能为 NULL,所以有必要在 runqueue 中预先保留。8) unsigned long n
2013-10-08 12:44:43 780
转载 linux2.4到linux2.6内核调度(3)
arrays 二元数组是两类就绪队列的容器,active 和 expired 分别指向其中一个。active 中的进程一旦用完了自己的时间片,就被转移到 expired 中,并设置好新的初始时间片;而当 active 为空时,则表示当前所有进程的时间片都消耗完了,此时,active 和 expired 进行一次对调,重新开始下一轮的时间片递减过程(参见"调度器")。回忆一下 2.4 调度系
2013-10-08 12:44:09 746
转载 linux2.4到linux2.6内核调度(2)
1) prio_array_t *active, *expired, arrays[2]runqueue 中最关键的数据结构。每个 CPU 的就绪队列按时间片是否用完分为两部分,分别通过 active 指针和 expired 指针访问,active 指向时间片没用完、当前可被调度的就绪进程,expired 指向时间片已用完的就绪进程。每一类就绪进程都用一个 struct prio_arra
2013-10-08 12:43:43 713
转载 linux2.4到linux2.6内核调度(1)
本文从 Linux 2.4 调度系统的缺陷入手,详细分析了 Linux 2.6 调度系统的原理和实现细节,并对与调度系统相关的负载平衡、NUMA 结构以及实时性能进行了分析和评价。文末,作者从调度系统的发展和实现出发,对 Linux 的发展特点和方向提出了自己的看法。1.前言Linux 的市场非常广阔,从桌面工作站到低端服务器,它都是任何商用操作系统的有力竞争对手。目前,Linux
2013-10-08 12:42:42 771
原创 两个鸡蛋,100层楼,找出摔碎鸡蛋的最低楼层,所用的摔鸡蛋次数最少
题目:问题:一幢大楼共计100层,某种类型的鸡蛋从某一楼层及其以上楼层摔下来时会被打破,从该层楼(即临界楼层)以下楼层摔下该鸡蛋,鸡蛋不会出现破损。现给你2个完全一样的该种类型的鸡蛋,问:如何通过这2个鸡蛋找到该临界楼层时,所用的摔鸡蛋次数最少? 思考:给了我们2个鸡蛋,意思就很明显,有1个鸡蛋起到关键作用,它可以被打破,以告诉我们临界楼层大致在什么位置。初探:看到这个题,首先
2013-10-06 19:55:04 4890 1
Hplus_v4.1.0
2016-10-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人