Skip to main content

Posts

Showing posts from February 18, 2018

操作系统何时运行?

编译:Linux 中国 /   Cwndmiao ,英文:Gustavo https://linux.cn/article-9095-1.html 请各位思考以下问题:在你阅读本文的这段时间内,计算机中的操作系统在 运行 吗?又或者仅仅是 Web 浏览器在运行?又或者它们也许均处于空闲状态,等待着你的指示? 这些问题并不复杂,但它们深入涉及到系统软件工作的本质。为了准确回答这些问题,我们需要透彻理解操作系统的行为模型,包括性能、安全和除错等方面。在该系列文章中,我们将以 Linux 为主举例来帮助你建立操作系统的行为模型,OS X 和 Windows 在必要的时候也会有所涉及。对那些深度探索者,我会在适当的时候给出 Linux 内核源码的链接。 这里有一个基本认知,就是,在任意给定时刻,某个 CPU 上仅有一个任务处于活动状态。大多数情形下这个任务是某个用户程序,例如你的 Web 浏览器或音乐播放器,但它也可能是一个操作系统线程。可以确信的是,它是 一个任务 ,不是两个或更多,也不是零个,对, 永远 是一个。 这听上去可能会有些问题。比如,你的音乐播放器是否会独占 CPU 而阻止其它任务运行?从而使你不能打开任务管理工具去杀死音乐播放器,甚至让鼠标点击也失效,因为操作系统没有机会去处理这些事件。你可能会愤而喊出,“它究竟在搞什么鬼?”,并引发骚乱。 此时便轮到 中断 大显身手了。中断就好比,一声巨响或一次拍肩后,神经系统通知大脑去感知外部刺激一般。计算机主板上的 芯片组 同样会中断 CPU 运行以传递新的外部事件,例如键盘上的某个键被按下、网络数据包的到达、一次硬盘读取的完成,等等。硬件外设、主板上的中断控制器和 CPU 本身,它们共同协作实现了中断机制。 中断对于记录我们最珍视的资源——时间——也至关重要。计算机 启动过程 中,操作系统内核会设置一个硬件计时器以让其产生周期性 计时中断 ,例如每隔 10 毫秒触发一次。每当计时中断到来,内核便会收到通知以更新系统统计信息和盘点如下事项:当前用户程序是否已运行了足够长时间?是否有某个 TCP 定时器超时了?中断给予了内核一个处理这些问题并采取合适措施的机会。这就好像你给自己设置了整天的周期闹铃并把它们用作检查点:我是否应该去做我正在进行的工作?是否存在更紧急的事项?

当 CPU 空闲时它都在做什么?

编译:Linux 中国 /  qhwdw,英文:Gustavo Duarte  https://linux.cn/article-9303-1.html 在上篇文章中我说了操作系统行为的基本原理是, 在任何一个给定的时刻 ,在一个 CPU 上 有且只有一个任务是活动的 。 但是,如果 CPU 无事可做的时候,又会是什么样的呢? 事实证明,这种情况是非常普遍的,对于绝大多数的个人电脑来说,这确实是一种常态:大量的睡眠进程,它们都在等待某种情况下被唤醒,差不多在 100% 的 CPU 时间中,都处于虚构的“空闲任务”中。事实上,如果一个普通用户的 CPU 处于持续的繁忙中,它可能意味着有一个错误、bug、或者运行了恶意软件。 因为我们不能违反我们的原理, 一些任务需要在一个 CPU 上激活 。首先是因为,这是一个良好的设计:持续很长时间去遍历内核,检查是否 有 一个活动任务,这种特殊情况是不明智的做法。最好的设计是 没有任何例外的情况 。无论何时,你写一个  if  语句,Nyan Cat 就会喵喵喵。其次,我们需要使用空闲的 CPU 去做 一些事情 ,让它们充满活力,你懂得,就是创建天网计划呗。 因此,保持这种设计的连续性,并领先于那些邪恶计划一步,操作系统开发者创建了一个 空闲任务 ,当没有其它任务可做时就调度它去运行。我们可以在 Linux 的  引导过程  中看到,这个空闲任务就是进程 0,它是由计算机打开电源时运行的第一个指令直接派生出来的。它在  rest_init  中初始化,在  init_idle_bootup_task  中初始化空闲调度类scheduling class。 简而言之,Linux 支持像实时进程、普通用户进程等等的不同调度类。当选择一个进程变成活动任务时,这些类按优先级进行查询。通过这种方式,核反应堆的控制代码总是优先于 web 浏览器运行。尽管在通常情况下,这些类返回  NULL ,意味着它们没有合适的任务需要去运行 —— 它们总是处于睡眠状态。但是空闲调度类,它是持续运行的,从不会失败:它总是返回空闲任务。 好吧,我们来看一下这个空闲任务 到底做了些什么 。下面是  cpu_idle_loop ,感谢开源能让我们看到它的代码: while ( 1 ) {      while ( !

加州已无回头路

发信人: Scania88 (Scania88), 信区: Military 标  题: 华人急了!加州已无回头路,撤不撤? 发信站: BBS 未名空间站 (Thu Feb 22 00:31:37 2018, 美东) 加州是个好地方,海滩,山峦,国家公园应有尽有,高科技公司多如牛毛,天气更是无 与伦比。但是有一个问题:加州政府实在是太左了,左得无法无天。     深蓝州民主党政客关心的无非是这么几件事:增加福利养票仓,保护罪犯,引进非 移,毒品合法化,加税,加税,加税...   加州州税全美最高,达到13.3%,竞争对手德州是0%;   如果税改通过,州税不能再抵税了,13.3 vs 0 的区别将更加明显;   汽油税已经居高不下,刚刚又通过法案增收520亿美元;   连续12年荣获对企业最不友好的州称号;   本来已经是非法移民的吸铁石,加州又成为全美第一个庇护州,今后更是非法移民 的天堂;   最近几年通过无数法案,释放罪犯,大罪轻判,小罪不判;   抢劫$950以下基本不抓了,商场盗窃,砸车窗和入室抢劫激增;   连续三次犯罪不用加刑了;   明知自己是艾滋病患者,故意去献血,故意去感染性伙伴,也从重罪变成轻罪了;   在学校推行伊斯兰教义,在课堂讲授各种同性恋性交方式,在各种场所推动男女同 厕;   中东难民蜂拥而入;   甲肝爆发,据说是无家可归的人太多;   大麻店如雨后春笋;   这还没说道高房价,高物价,交通堵塞之类的"小问题"呢。   如果再加上那场已经晚了60年的超级大地震,难怪不少人在想,是不是该撤了?     洛杉矶时报:加州大地震已经晚了60年   橙县纪事报:对公司来说,加州仍然是最差的州。而这项调查,加州连续12年名列 第一。     随着大麻合法化,大麻店开始遍地开花:   0.jpg   但是搬家谈何容易?很多人已经在加州生活多年,有家,有工作,有亲朋好友。有 人则表示要留下来继续战斗,哪怕加州已经实际上变成了墨西哥。   2010年人口普查,加州西裔已经超过37%,白人占40%,亚裔只有13%。但是西裔的 生育率远远高于其他族裔,再加上蜂拥而至的非法移民,其中绝大多数来自墨西哥,终 于,在2015年

标 题: 10年期国债破3%在即, 房市要做顶了

发信人: awaydream (昆仑天下), 信区: Stock 标  题: 10年期国债破3%在即, 房市要做顶了 发信站: BBS 未名空间站 (Wed Feb 21 15:53:51 2018, 美东) 现在是,fed 加息, 国债要破3%。 fed的利息都涨上来, 你10年期 国债怎么可能不涨?fed一年期利息加到2%的话(年底),10年期国债得 摸高到3.5%或者更高吧? fed不加息, 通胀发展,美元贬值,没人买国债,国债价格还得要狂跌, 破3%。 没人要的东西,不低价甩卖,怎么出手呀? 所以,10年期国债破3,甚至晚一点破4, 都是版上钉钉的事情了。债市的 几十年大牛市,可能真如大牛说的要玩完了。债市的大牛市,也伴随着房市的 大牛市。现在债市转熊,房市估计也快走到头了。 房市做顶,不仅仅是债市的原因,还有已经到了老龄化,不断拉大的贫富差距 等等。价格太高,很多人连做房奴的资格都没有了。怎么看,怎么像,要上演 楼塌了的剧目的时间的样子。这事情酝酿很久了,就差一个踹门的了,估计 加息就是那根稻草。 股市的话,大涨估计很难了,应该也要积极泡沫了,看看谁先倒下吧。 另外,还有一个大cycle就是1970年二战后建立的黄金本位的布雷顿森立体系破产, 进而美国收买沙特建立了石油美元和美债回收美元的美元全球货币的大循环。这玩意 也搞了快50年了,美国的贸易份额越来越小,石油又在美国操纵下低位运行了很久了。 美国再这么玩下去,这套体系也要崩盘了。 新的玩法是什么样子,有什么机会,大家能不能议一议?

标 题: 佛罗里达中学事件后 再次重申华人拥枪

发信人: CatchGodLine (捆仙绳), 信区: Military 标  题: 佛罗里达中学事件后 再次重申华人拥枪 发信站: BBS 未名空间站 (Wed Feb 21 19:12:14 2018, 美东) 哥以前对美国社会可以合法地自由持枪感到很难以理解 按说美国已经足够民主自由平等法治富足简直就是上天的宠儿 何必还要再去沾染枪支这种不祥之物 哥甚至还曾杞人忧天地担心过万一哪天美国出现社会动荡 美国人都集体发疯了拿枪上街互相乱杀杀得死光光了 这次佛罗里达中学生在对美国教育制度幻灭后 勇敢拿起枪维护自己的权益 哥明白了美国的持枪文化是造就了所谓美国社会中的人际关系平等的关键因素 这是一种类似于核恐怖平衡的效应 正是因为不分男女老弱病残人人都能够轻易持有枪支这种威力空前巨大的杀人武器 使得自古以来靠着拳大臂粗人多势众有权有钱等等强者对弱者的传统性力量优势 突然都变得毫无意义了或者至少被大大削弱了 强者在欺压弱者的时候也不得不有所顾忌 有所收敛了 人与人之间交往也变得更为小心翼翼 正是因为这样 与人之间的关系才有可能变得趋向平等 除非那些受国家力量重重保护的政府高级官员 比如每年花几十亿美元安保的民选总统 在普通人之间 不分贫富强弱社会地位高低 即使是公司大老板 都在人际交往上不得不尽可能平等相待了 以免一不小心触怒他人给自己轻易带来杀身之祸 所以 哥认为 在一个高度发达的多元资本主义社会 枪才代表了个体的绝对权力与绝对自由 代表了人类进化的一个高度 当年 弩和火枪的出现 让穿附昂贵盔甲的高级骑士退出了历史舞台 现在 自由拥枪让 任何人都站在同一起点 无论你是老弱或者妇襦 枪是自由与个人主义的传奇 二战后世界的和平其实是由核武器来维持的 而美国作为多民族多文化的移民国家 安全稳定也是由枪来维持的 特别当美国的司法制度 种族歧视 无法保护你的时候 枪 是你最可信赖的朋友 华人 拥枪 拥好枪 练枪 勤练枪 开枪 开准枪 才是安身立命的基本功 手中有枪 心中不慌 心中有枪 正道沧桑

Lauching a web browser in Python

# open page in default browser >>> import webbrowser >>> webbrowser.open('http://www.python.org') True   # open page in firefox >>> c = webbrowser.get('firefox') >>> c.open('http://www.python.org') True # open page in chrome >>> c = webbrowser.get('google-chrome') >>> c.open('http://www.python.org') True # open in a new browser tab >>> c.open_new_tab('http://www.python.org') True # open in a new browser window >>> c.open_new('http://www.python.org') True
Simple Mobile has 16GB Huawei Sensa Simple Mobile Prepaid Smartphone (H715BL) for $19.99 . Shipping is free . Thanks mezenat Note, Simple Mobile account not required. Purchase of a plan is also optional / not required (select 'I don't need a Service Plan' during checkout). Specs Qualcomm 64-bit Octa-core Processor (1.5GHz & 1.2GHz) 5.5" Display 2GB RAM 16GB Internal Storage (w/ microSD slot) 13MP Rear + 5MP Front Cameras Android 6.0 Marshmallow

Creating and Unpacking Archives in Python

>>> import shutil >>> shutil.unpack_archive('linux-2.6.11.tar.gz') >>> shutil.make_archive('linux26', 'zip', 'linux-2.6.11') '/tmp/linux26.zip' >>> shutil.get_archive_formats() [('bztar', "bzip2'ed tar-file"), ('gztar', "gzip'ed tar-file"), ('tar', 'uncompressed tar file'), ('xztar', "xz'ed tar-file"), ('zip', 'ZIP file')]

标 题: 从cs角度找热点不如从business角度下手

发信人: zhugong (zhugong), 信区: Programming 标  题: 从cs角度找热点不如从business角度下手 发信站: BBS 未名空间站 (Tue Feb 20 13:05:12 2018, 美东) 最近接触了几个物业管理的saas的东西 从计算机前沿技术的角度看,这些专业软件简直就是史前文物一样 什么深度学习和移动应用根本没有,但是市场很大 (还算有吧,其实也不大,看你怎么看了) 本版大牛随便写一个应该能秒了现有的东西 不过怎么打进现有的市场形成竞争是个问题 各位版友与其看区块链是热点还是深度学习是热点, 不如在business方面下点功夫,找到合适的销售搭档 卖软件应该不难 无论是深度学习还是区块链,应用市场都是很大的 但是跟风学技术靠做码农卖体力,实在也就是那么回事了 运气成分也很大 远不如着眼business方面 尼玛,现在能识别发票的财务软件都很少,别说用区块链记账对账的了 各位码农要是能做一个有区块链功能的财务软件, 有点business能力,应该竞争力蛮大的 当然码农做生意实在是性格不适合,包括我自己,所以我也知道说了也许是白说

Pandas examples

rats.csv is downloaded here: https://data.cityofchicago.org/Service-Requests/311-Service-Requests-Rodent-Baiting/97t6-zrhs >>> import pandas >>> rats = pandas.read_csv('rats.csv', skip_footer=1) >>> rats['Current Activity'].unique() array(['Dispatch Crew', nan, 'Request Sanitation Inspector',        'Inspect for Violation', 'FVI - Outcome'], dtype=object) >>> crew_dispatched = rats[rats['Current Activity'] == 'Dispatch Crew'] >>> len(crew_dispatched) 262417 >>> crew_dispatched['ZIP Code'].value_counts()  >>> crew_dispatched.groupby("Completion Date") >>> dates = crew_dispatched.groupby("Completion Date") >>> len(dates) 1775 >>> date_counts = dates.size() >>> date_counts [0:10] Completion Date 01/01/2014      7 01/02/2013     20 01/02/2014     96 01/02/2015      5 01/02/2018     71 01/03/20

decode/encode binary data using base64 encoding.

Decode a string of hexadecimaldigits into a byte string or encode a byte string as hex. >>> s = b'hello' >>> import binascii # encode as hex >>> h = binascii.b2a_hex(s) >>> h b'68656c6c6f' # decode back to bytes >>> binascii.a2b_hex(h) b'hello' >>>  >>> import base64 >>> h = base64.b16encode(s) >>> h b'68656C6C6F' >>> base64.b16decode(h) b'hello' decode/encode binary data using base64 encoding. >>> a = base64.b64encode(s) >>> a b'aGVsbG8=' >>> base64.b64decode(a) b'hello'

page table

Single level page table hierarchical page table inverted / hashed paging HW support for paging / TLB segmentation Single level page table At the end of last lecture, we introduced the notion of paging: divide a large virtual address space into many small pages, which can be independently swapped into and out of frames in physical memory. To do so, we need to keep a data structure (the page table ) for each process mapping page numbers to frame numbers. The simplest method is to put these into an array: the ith entry in the array gives the frame number in which the ith page is stored. Size of the page table note : these numbers are typical, but not worth memorizing: the process by which they are derived is more important. The page table needs one entry per page. Assuming a 4GB (2^32 byte) virtual and physical address space and a page size of 4kB (2^12 bytes), we see that the the 2^32 byte address space must be split into 2^20 pages. This means the page table

标 题: Re: 那些rebuilder在craiglist卖的车

发信人: Enrica (艾米), 信区: Automobile 标  题: Re: 那些rebuilder在craiglist卖的车 发信站: BBS 未名空间站 (Sun Feb 18 12:10:00 2018, 美东) 如果不太懂车,经济条件过得去的话,最好买新车。想稍微省点钱,可以买dealer 的 CPO. Herz的rent and buy也不错。 如果确实很缺钱,对车懂一些,愿意花功夫琢磨修车,在CL上买五千以下的车是最省钱 的选择。 还有,买新车要考虑几年后的resale value. 这里丰田的很多车型,不是所有车型,二 手车价格被市场炒得很高。买来开几年卖掉,实际每年的实际成本并不高。 买二手车 自己有一定修车知识和能力的话,考虑掉价快的车,但最好不要碰德系车。德系车维修 成本太高

Costco’s Organic Steel Cut Oats

A while back I posted here about one of my new finds at Costco: organic steel cut oats.  For 3.18kg, the price was an amazing $9.49! Now these oats are only $8.99!  Only a fifty cent difference, but fifty cents is fifty cents ! This should be on your grocery list.  Steel cut oats are super healthy and for this price they are very affordable.  My picky eater son loves them so much (mixed with raw honey, organic milk and cinnamon of course) that he actually eats it for breakfast and a snack!

Tuning Linux I/O Scheduler for SSDs

Linux gives you the option to select the I/O scheduler. The scheduler can be changed without rebooting too! You may be asking at this point, why would I ever want to change the I/O scheduler? Changing the scheduler makes sense when the overhead of optimizing the I/O (re-ordering I/O requests) is unnecessary and expensive. This setting should be fine-tuned per storage device. The best setting for an SSD will not be a good setting for an HDD. The current I/O scheduler can be viewed by typing the following command:   mrice@host:~$ cat /sys/block/sda/queue/scheduler noop anticipatory deadline [cfq] The current I/O scheduler (in brackets) for /dev/sda on this machine is CFQ , Completely Fair Queuing. This setting became the default in kernel 2.6.18 and it works well for HDDs. However, SSDs don't have rotating platters or magnetic heads. The I/O optimization algorithms in CFQ don't apply to SSDs. For an SSD,  the NOOP  I/O scheduler can reduce I/O latency and in

Selecting a Linux I/O Scheduler

As documented in /usr/src/linux/Documentation/block/switching-sched.txt , the I/O scheduler on any particular block device can be changed at runtime. There may be some latency as the previous scheduler's requests are all flushed before bringing the new scheduler into use, but it can be changed without problems even while the device is under heavy use. # cat /sys/block/hda/queue/scheduler noop deadline [cfq] # echo anticipatory > /sys/block/hda/queue/scheduler # cat /sys/block/hda/queue/scheduler noop [deadline] cfq Ideally, there would be a single scheduler to satisfy all needs. It doesn't seem to exist yet. The kernel often doesn't have enough knowledge to choose the best scheduler for your workload: noop is often the best choice for memory-backed block devices (e.g. ramdisks) and other non-rotational media (flash) where trying to reschedule I/O is a waste of resources deadline is a lightweight scheduler which tries to put a hard limit on latency