coroutine CPU利用率最高

T
TeacherWei
楼主 (未名空间)

牺牲的是响应速度。这两者是不能兼得的。

80-90年代初的个人电脑操作系统都是coroutine。包括Windows 3.1和当时的MacOS。

到了Windows 95就是抢先多任务了。

系统和语言支持并发是应用的需求。是不可取代的。比如我的IoT操作系统平台,就是
我自己实现的一个coroutine的调度器。每个用户app的实例,都是一个虚拟进程/线程
。进程概念是必须的,有利于安全隔离,用沙箱确保虚拟进程不能互相干扰。而且一个thread调度很多进程,进程杀死,一切资源自动GC了。

底层实现从coroutine改成thread/process。其实API是不用任何修改的。

最新回帖

T
TeacherWei
151 楼

这个真的要感谢你给指出来。交浅言深,能当面直陈的,对我都是有益的。

我自己注意到了,是故意放飞自我了。我也是付出了很多的,要是连放飞自我都不能,这辈子不是亏死了么?

【 在 netghost (Up to Isomorphism) 的大作中提到: 】
: 你真的感覺很爆,氣非常不順,當然可能自己沒注意到。

netghost
150 楼

你真的感覺很爆,氣非常不順,當然可能自己沒注意到。

【 在 TeacherWei (TW) 的大作中提到: 】
: 你哪里看出我不爽了?谁爽谁自己知道。
: 我说的都是可证明可验证的。有没有credit你说了不算。再说,指责我没有credit你也
: 要举例。不能张嘴胡喷。
: 你的人性,我手头就有很多例子。
:
: 所以你也承認你自己是“愛說說說啥”,所以別人覺得你的話沒有任何credit,
: 你有啥
:
: 好不爽的?
:
: .9
:

T
TeacherWei
149 楼

你哪里看出我不爽了?谁爽谁自己知道。

我说的都是可证明可验证的。有没有credit你说了不算。再说,指责我没有credit你也要举例。不能张嘴胡喷。

你的人性,我手头就有很多例子。

【 在 netghost(Up to Isomorphism) 的大作中提到: 】

: 所以你也承認你自己是“愛說說說啥”,所以別人覺得你的話沒有任何credit,你有啥

: 好不爽的?

: .9

dumbCoder

最近 cooperative threading, coroutine, fiber thread 这一堆的流行.
不就是因为 CPU 太快了, 传统(Linux)内核里的 scheduler+thread 太低效了么?
特别是针对 IO bound 的所谓互联网公司后台的"大并发" server 程序.
然后一堆语言把 scheduler+thread 的工作弄到语言和用户空间而已,
这个大家有啥不能理解的?
C
Caravel

主动yield和被动yield的区别,操作系统的线程操作是被动yield,等于时间冷冻,把
所有状态保存下来,下次从新开始。这样可能并不是最优,因为活干了一半可能很
messy,换一个不相干的进来,cache miss什么也很多。主动yield把活干完了,就主动去睡觉。

所以python虽然解释器是单线程,也可以写async code。

【 在 dumbCoder (HumbleCoder 不懂就问-_-) 的大作中提到: 】
: 最近 cooperative threading, coroutine, fiber thread 这一堆的流行.
: 不就是因为 CPU 太快了, 传统(Linux)内核里的 scheduler+thread 太低效了么?
: 特别是针对 IO bound 的所谓互联网公司后台的"大并发" server 程序.
: 然后一堆语言把 scheduler+thread 的工作弄到语言和用户空间而已,
: 这个大家有啥不能理解的?

dumbCoder

说的是

每个主动yield的逻辑底层, 至少都有1个被动yield的逻辑来保证正确性.
就好像Python里面如果不yield, 底层OS会帮它yield.
Go的话, goroutine都是被动yield, 被Go runtime scheduler保证正确性.

【 在 Caravel (克拉维尔) 的大作中提到: 】
: 主动yield和被动yield的区别,操作系统的线程操作是被动yield,等于时间冷冻,把
: 所有状态保存下来,下次从新开始。这样可能并不是最优,因为活干了一半可能很
: messy,换一个不相干的进来,cache miss什么也很多。主动yield把活干完了,就主动
: 去睡觉。
: 所以python虽然解释器是单线程,也可以写async code。

T
TeacherWei

preemptive其实也有主动yield,很多system call的结果都会把当前线程放到waiting queue里面,然后就去调度其他线程执行了。主要问题是这个context switch代价太高
而已。

coroutine降低的是context switch的代价而已。

对于我的IoT虚拟机而言,我不但希望自己调度,而且调度器还有kill任意coroutine的需求。对于GC语言,kill掉任意coroutine,其资源必须能够被GC。也就是逻辑上和
kill一个process一样。能满足这个需求的凤毛麟角。有什么架构能干干净净kill
thread的?

c
chebyshev

Go多了一层自动调度。https://www.mitbbs.com/article_t/Programming/31544075.html

以前python也有什么green thread。功能类似吧。就是自己搞个能做调度的中间层。

N任务M thread之调度,按照rust的Doc说法是很难做的:
The green threading M:N model requires a larger language runtime to manage
threads. As such, the Rust standard library only provides an implementation
of 1:1 threading.

但是其实此文档并没说到关键问题上。
以我现在的理解,无论进程还是线程调度,以及资源自动切换分配等。
都有大批的启发式算法。那些启发式算法,实际上是和硬件磨合出来的。
简言之,离开特定的硬件,其是不成立的。

你把当代操作系统之new version,装到旧的CPU上,肯定性能非线性下降。corner
cases无数。

【 在 dumbCoder (HumbleCoder 不懂就问-_-) 的大作中提到: 】
: 说的是
: 每个主动yield的逻辑底层, 至少都有1个被动yield的逻辑来保证正确性.
: 就好像Python里面如果不yield, 底层OS会帮它yield.
: Go的话, goroutine都是被动yield, 被Go runtime scheduler保证正确性.

netghost

原因很簡單,I/O multiplexing 比multi threading 難寫。但是multi threading對於併發要求高並行要求低的事情開銷太大。

問題是其實整個IT業界裏面,需要用coroutine來提高併發度的事情,少之又少,我可
以負責任地告訴大家,如果你的站點已經快到這個程度了,你most likely可以退休了。

【 在 dumbCoder (HumbleCoder 不懂就问-_-) 的大作中提到: 】
: 最近 cooperative threading, coroutine, fiber thread 这一堆的流行.
: 不就是因为 CPU 太快了, 传统(Linux)内核里的 scheduler+thread 太低效了么?
: 特别是针对 IO bound 的所谓互联网公司后台的"大并发" server 程序.
: 然后一堆语言把 scheduler+thread 的工作弄到语言和用户空间而已,
: 这个大家有啥不能理解的?

netghost

Golang的人之前就是搞C的人,知道C的核心地盤要搶不容易,所以不碰,帶來的好處就是可以上GC,程序內建runtime調度執行單位。

Rust想法不一樣,都快形成一個教派了,天天叫着一統漿糊。自然沒法在語言裏面把調度做死(M:N)。

【 在 chebyshev (......) 的大作中提到: 】
: Go多了一层自动调度。
: https://www.mitbbs.com/article_t/Programming/31544075.html
: 以前python也有什么green thread。功能类似吧。就是自己搞个能做调度的中间层。: N任务M thread之调度,按照rust的Doc说法是很难做的:
: The green threading M:N model requires a larger language runtime to manage: threads. As such, the Rust standard library only provides an
implementation
: of 1:1 threading.
: 但是其实此文档并没说到关键问题上。
: 以我现在的理解,无论进程还是线程调度,以及资源自动切换分配等。
: 都有大批的启发式算法。那些启发式算法,实际上是和硬件磨合出来的。
: ...................

T
TeacherWei

Coroutine用于IoT app引擎,还有一个重要作用就是每个app物理上应该都是一个独立
的process。

而process和函数function的区别在于,process是一个死循环的函数。

迄今为止,其他IoT app的架构还都是只允许开发过把瘾就死的函数。所谓的立即返回
的lambda function。因为图灵不完备就要创造几十个新概念,各种反人性之后依然图
灵完备存疑。

dumbCoder

我看最后大家都爱自己写scheduler, 我做game server时候也是自己schedule.
写个不那么通用的 scheduler 其实不难,
其实就是在一个 underlying thread 里调用自己定义的运行单元.
underlying thread可以是C/C++ pthread, 也可以是GO goroutine,
自己定义的运行单元可以是 function, callback 啥的.
好比 Linux OS 就是把我们的 main 函数当运行单元来 schedule.

【 在 TeacherWei (TW) 的大作中提到: 】
: Coroutine用于IoT app引擎,还有一个重要作用就是每个app物理上应该都是一个独立
: 的process。
: 而process和函数function的区别在于,process是一个死循环的函数。
: 迄今为止,其他IoT app的架构还都是只允许开发过把瘾就死的函数。所谓的立即返回
: 的lambda function。因为图灵不完备就要创造几十个新概念,各种反人性之后依然图
: 灵完备存疑。

T
TeacherWei

我的这套架构,10年前就确定了。迄今为止,整个行业这么多人,砸了成百上千亿美金,也没人想到要做一个图灵完备的process。扯了这么多蛋,就是不让开发者去写main
函数。

我被授予的那个5年前的专利,表面看来是重新发明了树结构,实质上是对我允许别人
写main函数的奖励。

这个世界,就是这么诡异。

【 在 dumbCoder(HumbleCoder 不懂就问-_-) 的大作中提到: 】

: 我看最后大家都爱自己写scheduler, 我做game server时候也是自己schedule.

: 写个不那么通用的 scheduler 其实不难,

: 其实就是在一个 underlying thread 里调用自己定义的运行单元.

: underlying thread可以是C/C pthread, 也可以是GO goroutine,

: 自己定义的运行单元可以是 function, callback 啥的.

: 好比 Linux OS 就是把我们的 main 函数当运行单元来 schedule.

C
Caravel

如果工作就是调包,是很没意思的,长此以往,马工这个行业可能就消亡了。

而实际情况是,会不停的造轮子,新一代不会甘心就用前人的轮子,会不停的发明新的语言,继承或者部分继承老的语言。这样也可以保持程序员的创造性。只要人类的人口保持增长,这个模式就没有问题。总有足够多的人把老问题掌握了再改进。

【 在 dumbCoder (HumbleCoder 不懂就问-_-) 的大作中提到: 】
: 我看最后大家都爱自己写scheduler, 我做game server时候也是自己schedule.
: 写个不那么通用的 scheduler 其实不难,
: 其实就是在一个 underlying thread 里调用自己定义的运行单元.
: underlying thread可以是C/C++ pthread, 也可以是GO goroutine,
: 自己定义的运行单元可以是 function, callback 啥的.
: 好比 Linux OS 就是把我们的 main 函数当运行单元来 schedule.

T
TeacherWei

你们还是太年轻,太阳底下没有新鲜事儿。coroutine是80年代的流行技术。你们没做
过DOS和Windows 3.1编程,没有深刻印象而已。

80年代是我从小学到中学的年代,是一个美好的年代。

我做了这么多事情,基本都是70-80年代的技术。把最近20年的垃圾都丢掉,很多问题
就能简化10倍了。

【 在 Caravel (克拉维尔) 的大作中提到: 】
: 如果工作就是调包,是很没意思的,长此以往,马工这个行业可能就消亡了。
: 而实际情况是,会不停的造轮子,新一代不会甘心就用前人的轮子,会不停的发明新的
: 语言,继承或者部分继承老的语言。这样也可以保持程序员的创造性。只要人类的人口
: 保持增长,这个模式就没有问题。总有足够多的人把老问题掌握了再改进。

bihai

过去有个知识我不清楚了,在80年代,DOS时代的芯片,和现在Linux但是i7比较,发生硬件中断的时候,要把当前的IP放到堆栈上。这个是哪个堆栈?现在多任务了,每个进程都有一个堆栈了。现在有什么改变吗?

【 在 TeacherWei (TW) 的大作中提到: 】
: 你们还是太年轻,太阳底下没有新鲜事儿。coroutine是80年代的流行技术。你们没做
: 过DOS和Windows 3.1编程,没有深刻印象而已。
: 80年代是我从小学到中学的年代,是一个美好的年代。
: 我做了这么多事情,基本都是70-80年代的技术。把最近20年的垃圾都丢掉,很多问题
: 就能简化10倍了。

T
TeacherWei

Intel的硬件逐渐为现代OS做了很多修改。

具体比较复杂。你可以搜一下memory translation和CPU ring。

简单说,中断可能会改变保护优先级,也就是CPU ring。在服务中断的时候,如果ring改变,硬件会自动切换stack。

【 在 bihai(学得不好) 的大作中提到: 】

: 过去有个知识我不清楚了,在80年代,DOS时代的芯片,和现在Linux但是i7比较,发生

: 硬件中断的时候,要把当前的IP放到堆栈上。这个是哪个堆栈?现在多任务了,每个进

: 程都有一个堆栈了。现在有什么改变吗?

m
minquan

我还记得QBasic最喜欢写goto

【 在 TeacherWei (TW) 的大作中提到: 】
: 你们还是太年轻,太阳底下没有新鲜事儿。coroutine是80年代的流行技术。你们没做
: 过DOS和Windows 3.1编程,没有深刻印象而已。
: 80年代是我从小学到中学的年代,是一个美好的年代。
: 我做了这么多事情,基本都是70-80年代的技术。把最近20年的垃圾都丢掉,很多问题
: 就能简化10倍了。

dumbCoder

新一代造的新流行的轮子, 可能大部分确实是垃圾.
为啥? 我长期观察思考的结论是: 能推广开并流行的"时髦"技术,
可能不是啥好技术,只是推广者资源多,推的”时髦“技术能忽悠人入坑.
总有一轮轮新技术来了又走,这里 前端, DevOps/infra 是重灾区.

所以我比较同意老魏或者netghost的观点: 没啥有用的新技术...
工业界就是时尚界...

参考这个,现在工业界就是乱造复杂的垃圾技术:
Jonathan Blow - Preventing the Collapse of Civilization
https://www.youtube.com/watch?v=pW-SOdj4Kkk


【 在 Caravel (克拉维尔) 的大作中提到: 】
: 如果工作就是调包,是很没意思的,长此以往,马工这个行业可能就消亡了。
: 而实际情况是,会不停的造轮子,新一代不会甘心就用前人的轮子,会不停的发明新的
: 语言,继承或者部分继承老的语言。这样也可以保持程序员的创造性。只要人类的人口
: 保持增长,这个模式就没有问题。总有足够多的人把老问题掌握了再改进。

C
Caravel

你们没有明白我的意思。

即使不是新鲜的东西,新一代也会喜欢自己打造而不是用旧的。因为创造是学习的唯一办法,假设世界上再也不搞新语言了,那很快PL language的那一套methodology就会被遗忘,最终就是真正需要的时候也不会有人再会使用。

【 在 dumbCoder (HumbleCoder 不懂就问-_-) 的大作中提到: 】
: 新一代造的新流行的轮子, 可能大部分确实是垃圾.
: 为啥? 我长期观察思考的结论是: 能推广开并流行的"时髦"技术,
: 可能不是啥好技术,只是推广者资源多,推的”时髦“技术能忽悠人入坑.
: 总有一轮轮新技术来了又走,这里 前端, DevOps/infra 是重灾区.
: 所以我比较同意老魏或者netghost的观点: 没啥有用的新技术...
: 工业界就是时尚界...
: 参考这个,现在工业界就是乱造复杂的垃圾技术:
: Jonathan Blow - Preventing the Collapse of Civilization
: https://www.youtube.com/watch?v=pW-SOdj4Kkk


g
guvest

学习就是创造。这个说法不错。这就是阴阳易理。你读古文了吧?

旧的就是新的,新的就是旧的。但是除process philosophy可解释的现象之外。也有本质性上不可解释的突破出现。所以哲学有两类。一类是阴阳易理,一类是莱布尼兹精妙无比的逻辑单子论。

所以OS之发展除了evolving process,也必有突破性的关键节点。以并发而言,关键节点之一就是定义concurrency 之terminology 与notions来frame住问题域的那个文章。

若要从更好的角度考虑此类问题。必须有notions之新突破。一个可以尝试的方向我认
为就是把function call和stack分开。

【 在 Caravel(克拉维尔) 的大作中提到: 】

: 你们没有明白我的意思。

: 即使不是新鲜的东西,新一代也会喜欢自己打造而不是用旧的。因为创造是学习的唯一

: 办法,假设世界上再也不搞新语言了,那很快PL language的那一套methodology就会被

: 遗忘,最终就是真正需要的时候也不会有人再会使用。

C
Caravel

function call 和stack紧密联系是因为OS需要随时把process swap出来吧还有历史依
赖,其实并不是必须的,如果memory极大丰富,也可以用一个图来实现。call的时候生成一个新的图的节点,call 完了把结果放在一个节点里让parent去取。

【 在 guvest (我爱你老婆Anna) 的大作中提到: 】
: 学习就是创造。这个说法不错。这就是阴阳易理。你读古文了吧?
: 旧的就是新的,新的就是旧的。但是除process philosophy可解释的现象之外。也有本
: 质性上不可解释的突破出现。所以哲学有两类。一类是阴阳易理,一类是莱布尼兹精妙
: 无比的逻辑单子论。
: 所以OS之发展除了evolving process,也必有突破性的关键节点。以并发而言,关键节
: 点之一就是定义concurrency 之terminology 与notions来frame住问题域的那个文章。
: 若要从更好的角度考虑此类问题。必须有notions之新突破。一个可以尝试的方向我认
: 为就是把function call和stack分开。
:
: 你们没有明白我的意思。
:
: 即使不是新鲜的东西,新一代也会喜欢自己打造而不是用旧的。因为创造是学习
: ...................

g
guvest

Function 与 stack关联。以及线程什么的。都是与硬件关联的。特殊寄存器,特殊指
令集,etc 不可或缺。

【 在 Caravel(克拉维尔) 的大作中提到: 】

: function call 和stack紧密联系是因为OS需要随时把process swap出来吧还有
历史依

: 赖,其实并不是必须的,如果memory极大丰富,也可以用一个图来实现。call的时候生

: 成一个新的图的节点,call 完了把结果放在一个节点里让parent去取。

netghost

Very good talk.

這個裏面主要的問題在於IT行業錢太多了,所有錢太多的地方,最後都是在和人鬥。

【 在 dumbCoder (HumbleCoder 不懂就问-_-) 的大作中提到: 】
: 新一代造的新流行的轮子, 可能大部分确实是垃圾.
: 为啥? 我长期观察思考的结论是: 能推广开并流行的"时髦"技术,
: 可能不是啥好技术,只是推广者资源多,推的”时髦“技术能忽悠人入坑.
: 总有一轮轮新技术来了又走,这里 前端, DevOps/infra 是重灾区.
: 所以我比较同意老魏或者netghost的观点: 没啥有用的新技术...
: 工业界就是时尚界...
: 参考这个,现在工业界就是乱造复杂的垃圾技术:
: Jonathan Blow - Preventing the Collapse of Civilization
: https://www.youtube.com/watch?v=pW-SOdj4Kkk


netghost

你如果真的對這種東西有興趣。建議你多瞭解一下硬件。

f(g(x)) = (gxf)(x),只是數學上面的說法而已。
【 在 Caravel (克拉维尔) 的大作中提到: 】
: 你们没有明白我的意思。
: 即使不是新鲜的东西,新一代也会喜欢自己打造而不是用旧的。因为创造是学习的唯一
: 办法,假设世界上再也不搞新语言了,那很快PL language的那一套methodology就会被
: 遗忘,最终就是真正需要的时候也不会有人再会使用。

g
guvest

Memory再丰富。也会分用户写码之memory空间与物理空间。寻址也要分页。很多问题由此而生。
内存分页最早是Turing 提出的。他可能觉得太简单一句话带过了。实际上这问题很复
杂。只能启发式样。不然则会碰到离散数学难题。

【 在 guvest(我爱你老婆Anna) 的大作中提到: 】
<br>: Function 与 stack关联。以及线程什么的。都是与硬件关联的。特殊寄
存器,
特殊指
<br>: 令集,etc 不可或缺。
<br>: 历史依
<br>: 时候生
<br>

netghost

關鍵“新一代“並沒有能夠搞出新的東西,原因很簡單,今天學CS的人,沒幾個人見過真的電腦,這樣能搞出有用的東西才有鬼了。

【 在 Caravel (克拉维尔) 的大作中提到: 】
: 你们没有明白我的意思。
: 即使不是新鲜的东西,新一代也会喜欢自己打造而不是用旧的。因为创造是学习的唯一
: 办法,假设世界上再也不搞新语言了,那很快PL language的那一套methodology就会被
: 遗忘,最终就是真正需要的时候也不会有人再会使用。

dumbCoder

哦哦,你这个观点我接受

【 在 Caravel (克拉维尔) 的大作中提到: 】
: 你们没有明白我的意思。
: 即使不是新鲜的东西,新一代也会喜欢自己打造而不是用旧的。因为创造是学习的唯一
: 办法,假设世界上再也不搞新语言了,那很快PL language的那一套methodology就会被
: 遗忘,最终就是真正需要的时候也不会有人再会使用。

dumbCoder

确实是要学到精华,就得自己从头造东西
天天用流行的被包装了N层的垃圾,人就容易废了还不自知 XD

【 在 Caravel (克拉维尔) 的大作中提到: 】
: 你们没有明白我的意思。
: 即使不是新鲜的东西,新一代也会喜欢自己打造而不是用旧的。因为创造是学习的唯一
: 办法,假设世界上再也不搞新语言了,那很快PL language的那一套methodology就会被
: 遗忘,最终就是真正需要的时候也不会有人再会使用。

T
TeacherWei

内存分页一点都不复杂。

stack就是一个指针而已。就好像是程序指令指针一样,硬件做了些优化。

你和Caravel根本就不知道自己在说什么。

【 在 guvest (我爱你老婆Anna) 的大作中提到: 】
: Memory再丰富。也会分用户写码之memory空间与物理空间。寻址也要分页。很多问题由
: 此而生。
: 内存分页最早是Turing 提出的。他可能觉得太简单一句话带过了。实际上这问题很复
: 杂。只能启发式样。不然则会碰到离散数学难题。
:
: Function 与 stack关联。以及线程什么的。都是与硬件关联的。特殊寄
: 存器,
: 特殊指
:
: 令集,etc 不可或缺。
:
: 历史依
:
: 时候生
: ...................

c
chebyshev

You did not own the instruction set and the cache design, etc。
我印象里开始GNU自己也在做内核。此项目进展缓慢。然后linus自己完成了一个内核。开始可以说凑了个toy OS。后来与大厂联合才发展起来的。

即便如此,你考古下其team与intc,amd,以及Android各种debate就知道有多麻烦了。这中间的取舍的策略很难定。

另外我记得GNU最早那个内核项目现在也还有人做。
(open BSD etc也有人做。)
【 在 dumbCoder (HumbleCoder 不懂就问-_-) 的大作中提到: 】
: 确实是要学到精华,就得自己从头造东西
: 天天用流行的被包装了N层的垃圾,人就容易废了还不自知 XD

c
chebyshev

教科书网上多的是:https://www2.latech.edu/~box/os/ch08.pdf

实用则有各种spec:https://software.intel.com/content/www/us/en/develop/download/5-level-paging-and-5-level-ept-white-paper.html
https://en.wikipedia.org/wiki/Intel_5-level_paging

你自己对比。看看我哪句话概括的不对。

我的立论很简单:
[1]
不理解硬件之相应互相配合的设计,
是不可能理解为何读连RAM这么一件简单的事,都是高度非线性的。
[2]
各种paging algorithm,本身其实都是启发式,看上去有道理。
实际上算法上的优劣并无多大区别。因为memory负载是不确定的。
【 在 TeacherWei (TW) 的大作中提到: 】
: 内存分页一点都不复杂。
: stack就是一个指针而已。就好像是程序指令指针一样,硬件做了些优化。
: 你和Caravel根本就不知道自己在说什么。

T
TeacherWei

memory translation就是一个查表。硬件有TLB能够加速,因为一般memory access都有很强的locality。

这是well defined problem,不是什么组合数学的难题。至于目前context switch的
TLB flush开销太大,将来有改进的空间,那也是硬件的事情,说白了就是还没来得及
堆晶体管而已。没有啥可以故弄玄虚的。

【 在 chebyshev (......) 的大作中提到: 】
: OS课本有简单模型的标准章节。
: https://www2.latech.edu/~box/os/ch08.pdf
: 实用则有各种spec。
: https://software.intel.com/content/www/us/en/develop/download/5-level-
paging
: -and-5-level-ept-white-paper.html
: 谁知道怎么回事,谁不知道。自己对比即可。

c
chebyshev

你找本课本对比。看看我哪句话概括的不对。

我的立论很简单:
[1]
不理解硬件之相应互相配合的设计,
是不可能理解为何读连RAM这么一件简单的事,都是高度非线性的。
[2]
各种paging algorithm,本身其实都是启发式,看上去有道理。
实际上算法上的优劣并无多大区别。因为memory负载是不确定的。

algorithm你读下https://en.wikipedia.org/wiki/Page_replacement_algorithm#The_theoretically_
optimal_page_replacement_algorithm

如果看程序,我说个最具体的问题。

周期T的memory负载用什么算法paging最好? 这问题与T是相关的。
你可以自己研究下。自己电脑也可以测出来。

【 在 TeacherWei (TW) 的大作中提到: 】
: memory translation就是一个查表。硬件有TLB能够加速,因为一般memory access都有
: 很强的locality。
: 这是well defined problem,不是什么组合数学的难题。至于目前context switch的: TLB flush开销太大,将来有改进的空间,那也是硬件的事情,说白了就是还没来得及
: 堆晶体管而已。没有啥可以故弄玄虚的。
: paging

T
TeacherWei

So what?大家都是近似LRU。至于如何近似的?好像你真的分析过一样!反正我是不会去管。

RAM根本不算啥,连指令执行都是非线性的。所以才有编译器进行优化。其它马工不需
要操这个心。

【 在 chebyshev (......) 的大作中提到: 】
: 你找本课本对比。看看我哪句话概括的不对。
: 我的立论很简单:
: [1]
: 不理解硬件之相应互相配合的设计,
: 是不可能理解为何读连RAM这么一件简单的事,都是高度非线性的。
: [2]
: 各种paging algorithm,本身其实都是启发式,看上去有道理。
: 实际上算法上的优劣并无多大区别。因为memory负载是不确定的。
: algorithm你读下
: https://en.wikipedia.org/wiki/Page_replacement_algorithm#The_theoretically_
: ...................

c
chebyshev

你不管是你的事。不要随便出来说别人这个那个懂还是不懂。

【 在 TeacherWei (TW) 的大作中提到: 】
: So what?大家都是近似LRU。至于如何近似的?好像你真的分析过一样!反正我是不会
: 去管。
: RAM根本不算啥,连指令执行都是非线性的。所以才有编译器进行优化。其它马工不需
: 要操这个心。

T
TeacherWei

你倒是说说这算哪门子组合数学的难题了?

【 在 chebyshev (......) 的大作中提到: 】
: 你不管是你的事。不要随便出来说别人这个那个懂还是不懂。

netghost

Linux在大廠加入前已經不是toy了。google可能是第一個Linux的受益者。

此外,大廠對linux的貢獻弊大於利。
【 在 chebyshev (......) 的大作中提到: 】
: You did not own the instruction set and the cache design, etc。
: 我印象里开始GNU自己也在做内核。此项目进展缓慢。然后linus自己完成了一个内核。
: 开始可以说凑了个toy OS。后来与大厂联合才发展起来的。
: 即便如此,你考古下其team与intc,amd,以及Android各种debate就知道有多麻烦了。
: 这中间的取舍的策略很难定。
: 另外我记得GNU最早那个内核项目现在也还有人做。
: (open BSD etc也有人做。)

g
guvest

我指的是他最早那个没有软盘驱动的内核。后来来美国之后就是另一回事了。没有与半导体公司的协调办不成事的。
另一方面,tsla,
Apple那种软硬联合设计不说是不是trends,有自己的道理。
【 在 netghost(Up to Isomorphism) 的大作中提到: 】
<br>: Linux在大廠加入前已經不是toy了。google可能是第一個Linux的受益者。
<br>: 此外,大廠對linux的貢獻弊大於利。
<br>

g
guvest


你写个test程序,每隔T秒给一个大的memory access。
然后你跑一下,有s(T)个page fault。

然后a = integration of s(T) /T。

求一個paging algorithm,有最少的平均page fault 。也就是a最小。

我認為这是很难的組合優化問題。你可以不同意。

【 在 TeacherWei(TW) 的大作中提到: 】
<br>: 你倒是说说这算哪门子组合数学的难题了?
<br>

T
TeacherWei

我当然不同意。各种标准benchmark网上都能下载,都是各类现实问题,编译运行以后
,page fault数量都自动给你打印出来。人家都是实测。

这方面论文也是汗牛充栋。没人把它当组合数学问题。

【 在 guvest(我爱你老婆Anna) 的大作中提到: 】

: 你写个test程序,每隔T秒给一个大的memory access。

: 然后你跑一下,有s(T)个page fault。

: 然后a = integration of s(T) /T。

: 求一個paging algorithm,有最少的平均page fault 。也就是a最小。

: 我認為这是很难的組合優化問題。你可以不同意。

:
g
guvest

我说的这点东西不是新的。cs专业如果考如果考OS。
多半会有一道是memory相关的内容。前面我也给了课本以及其他标准参考资料。

你觉得自己懂,那与我无关。或者你持有“内存分页很简单”之观点那也无所谓。

但是你说我与carvel的讨论属于是不知在说什么。那就有点只知其一不知其二了。

【 在 TeacherWei(TW) 的大作中提到: 】
<br>: 我当然不同意。各种标准benchmark网上都能下载,都是各类现实问题,
编译运
行以后
<br>: ,page fault数量都自动给你打印出来。人家都是实测。
<br>: 这方面论文也是汗牛充栋。没人把它当组合数学问题。
<br>

iDemocracy

也是,科技越发达,越能理解亚里士多德时期的哲学。
我近五年对西方神学无比佩服,里面布满了纯逻辑在人性上的应用,这两个主题恰好我都有点兴趣。

【 在 guvest (我爱你老婆Anna) 的大作中提到: 】
: 学习就是创造。这个说法不错。这就是阴阳易理。你读古文了吧?
: 旧的就是新的,新的就是旧的。但是除process philosophy可解释的现象之外。也有本
: 质性上不可解释的突破出现。所以哲学有两类。一类是阴阳易理,一类是莱布尼兹精妙
: 无比的逻辑单子论。
: 所以OS之发展除了evolving process,也必有突破性的关键节点。以并发而言,关键节
: 点之一就是定义concurrency 之terminology 与notions来frame住问题域的那个文章。
: 若要从更好的角度考虑此类问题。必须有notions之新突破。一个可以尝试的方向我认
: 为就是把function call和stack分开。
:
: 你们没有明白我的意思。
:
: 即使不是新鲜的东西,新一代也会喜欢自己打造而不是用旧的。因为创造是学习
: ...................
iDemocracy

牛逼,你们这么一讨论,很受启发。
T
TeacherWei

你口口声声拿教科书说事儿。
那请你给我找出来,哪一本教科书把内存分页当组合数学问题了?

【 在 guvest(我爱你老婆Anna) 的大作中提到: 】

: 我说的这点东西不是新的。cs专业如果考如果考OS。

: 多半会有一道是memory相关的内容。前面我也给了课本以及其他标准参考资料。
: 你觉得自己懂,那与我无关。或者你持有“内存分页很简单”之观点那也无

: 所谓。

: 但是你说我与carvel的讨论属于是不知在说什么。那就有点只知其一不知其二了。

:
g
guvest
https://arxiv.org/pdf/1506.07905.pdf

optimization approach 之内存或者其他资源分配研究历史悠久,并不罕见。

我说教科书,是因为你说 “ 内存分页一点都不复杂。stack就是一个指针而已。”
你说的是对OS给的接口以上的东西之一种用户感受。
查查课本能换个上下文。

用最简单的模型想一下,TLB什么的cache就那么点地方。一个机器上有诸多进程,有停有走。然而每一
进程都要用到这点cache里的表格,才能有效的把虚拟地址翻译成RAM物理地址。
(不然,则要去RAM找表格,这样两次访问了RAM。时间乘2。最坏情况要去磁盘找表格。)如何让许许多多进程用好这点快速cache,这问题怎么可能不复杂?

所以你说的“不复杂”与我与其他人讨论之所指,不是一回事。
这点找个课本看下章节分布就知道了。

【 在 TeacherWei(TW) 的大作中提到: 】
<br>: 你口口声声拿教科书说事儿。
<br>: 那请你给我找出来,哪一本教科书把内存分页当组合数学问题了?
<br>

T
TeacherWei

你别跑偏,你说这是组合数学难题,然后让我查教科书。这里大多是科班出身,肯定都读过教科书。你不是科班出身,我不认为你真的读过教科书。所以我问你,哪一本教科书说这是组合数学问题了?请你找出来。

我说了,paging就是查表。这个表也在内存里。CPU越来越快,所以要硬件加速。加速
算法就是简单的cache。这个不复杂,也不是组合数学问题,大家都很懂。现在的硬件
实现还有很大改进空间,但不是在cache的算法。在哪方面我不认为你知道,我也不告
诉你。

至于内存不够,用磁盘做下一级缓存。称为page replacement,也叫swap。稍微复杂一点。因为理论上把最不常用的换掉是最优。实践上只能近似。这玩意儿已经没人研究了。因为内存越来越便宜,而且越来越大。失去了研究意义。again,这也不是组合数学
问题。

这些科班出身的都懂。所以也没人发现新大陆一样半懂不懂发感慨。

【 在 guvest(我爱你老婆Anna) 的大作中提到: 】

: https://arxiv.org/pdf/1506.07905.pdf

: optimization approach 之内存或者其他资源分配研究历史悠久,并不罕见。

: 我说教科书,是因为你说 “ 内存分页一点都不复杂。stack就是一个指针而已。

: ”

: 你说的是对OS给的接口以上的东西之一种用户感受。

: 查查课本能换个上下文。

: 用最简单的模型想一下,TLB什么的cache就那么点地方。一个机器上有诸多进程,有停

: 有走。然而每一

: 进程都要用到这点cache里的表格,才能有效的把虚拟地址翻译成RAM物理地址。
: (不然,则要去RAM找表格,这样两次访问了RAM。时间乘2。最坏情况要去磁盘找
表格。)
: ...................

g
guvest

我让你看教科书是为了让你明白你所说的“内存分页一点不复杂”从任何
textbook的角
度是错的。我手边常备有一个20年前的教科书查阅。你说的东西都是从os给的接口以上的。我不想直接指出而已。

至于我说的组合优化问题。前面那个链接已经把优化问题抽象出来了。其为一离散优化。问题是不是组合优化类的。你可以同意也可以不同意。

你说cache 算法已经没人研究了,就是查表,表格也存在内存里等等,...。实情如何
?按我前面给的link比对就知道实情了。本身这就是本科生课程而已。无谓争论。
【 在 TeacherWei(TW) 的大作中提到: 】
<br>: 你别跑偏,你说这是组合数学难题,然后让我查教科书。这里大多是科班出身,
肯定都
<br>: 读过教科书。你不是科班出身,我不认为你真的读过教科书。所以我问你,哪一
本教科
<br>: 书说这是组合数学问题了?请你找出来。
<br>: 我说了,paging就是查表。这个表也在内存里。CPU越来越快,所以要硬
件加速
。加速
<br>: 算法就是简单的cache。这个不复杂,也不是组合数学问题,大家都很懂
。现在
的硬件
<br>: 实现还有很大改进空间,但不是在cache的算法。在哪方面我不认为你知
道,我
也不告
<br>: 诉你。
<br>: 至于内存不够,用磁盘做下一级缓存。称为page replacement,也叫swap。稍微
复杂一
<br>: 点。因为理论上把最不常用的换掉是最优。实践上只能近似。这玩意儿已经没人
研究了
<br>: 。因为内存越来越便宜,而且越来越大。失去了研究意义。again,这也
不是组
合数学
: ...................
<br>

T
TeacherWei

什么叫接口以上的?接口以上就是一malloc而已。OS的作用之一就是memory
management,必须要把memory translation藏起来。

memory translation就是查表。多少级indirect都是查表。不复杂是肯定的。

TLB也不复杂。就是一个简单的cache。这些算法硬件都已经定死,软件没啥可优化的。

至于swap,现在已经越来越不重要了。你愿意说那是组合数学问题只能说是你的观点。没有教科书那样说。

【 在 guvest (我爱你老婆Anna) 的大作中提到: 】
: 我让你看教科书是为了让你明白你所说的“内存分页一点不复杂”从任何textbook的角
: 度是错的。我手边常备有一个20年前的教科书查阅。你说的东西都是从os给的接口以上
: 的。我不想直接指出而已。
: 至于我说的组合优化问题。前面那个链接已经把优化问题抽象出来了。其为一离散优化
: 。问题是不是组合优化类的。你可以同意也可以不同意。
:
: 你别跑偏,你说这是组合数学难题,然后让我查教科书。这里大多是科班出身,
: 肯定都
:
: 读过教科书。你不是科班出身,我不认为你真的读过教科书。所以我问你,哪一
: 本教科
:
: 书说这是组合数学问题了?请你找出来。
: ...................

g
guvest

接口以上是用户。接口以下是design和principle。
你是OS之用户。熟悉一两种接口。不熟悉原理。(这个无可厚非)
就这么简单。

你认为这些都定死了,没研究了,没办法优化了,etc。
我没必要纠正你的看法。还是那句话。看看课本和一点Wikipedia 即可:以intel为例
。变5层 page也
就不久前的事。且与intel其他设计有关。
事实就放在那里。

【 在 TeacherWei(TW) 的大作中提到: 】
<br>: 什么叫接口以上的?接口以上就是一malloc而已。OS的作用之一就是
memory
<br>: management,必须要把memory translation藏起来。
<br>: memory translation就是查表。多少级indirect都是查表。不复杂是肯定的。
<br>: TLB也不复杂。就是一个简单的cache。这些算法硬件都已经定死,软件没啥可优
化的。
<br>: 至于swap,现在已经越来越不重要了。你愿意说那是组合数学问题只能说是你的
观点。
<br>: 没有教科书那样说。
<br>

T
TeacherWei

你说我是OS用户,暗示你自己研究design和principl高我一等?

你这种人讲话一贯这个套路,我善意提醒你这是很令人反感的。一贯拿别人都知道的常识夸夸其谈,自己又没有任何真知灼见。我不理解你扯这些蛋有什么意义?有人能放心让你commit哪怕一行C代码到任何正经的项目里面去么?

我以前的帖子讲的很清楚,这东西就是这么简单。不需要扯蛋。stack也就是一个指针
,硬件上被特殊对待被赋予了一些含义而已。

谨言慎行。

【 在 guvest (我爱你老婆Anna) 的大作中提到: 】
: 接口以上是用户。接口以下是design和principle。
: 你是OS之用户。熟悉一两种接口。不熟悉原理。
: 就这么简单。
: 你认为这些都定死了,没研究了,没办法优化了,etc。
: 我没必要纠正你的看法。还是那句话。看看课本和一点Wikipedia 即可:以intel为例
: 。变5层 page也
: 就不久前的事。且与intel其他设计有关。
: 事实就放在那里。
:
: 什么叫接口以上的?接口以上就是一malloc而已。OS的作用之一就是
: memory
: ...................

c
chebyshev

当然不是暗示高你一等。应用比底层更有价值,这是个趋势。
这个贴里面,肯定是人人都比我更熟悉linux之应用接口。
只是你说我与carvel不知道自己在说什么。所以我交代几句背景罢了。

我x年前即掌控过release几千万装机量的c代码。
与人合作的代码用户之装机则是B数量级的。你的手机,laptop里大概率有我的程序
和硬件在跑。你见过我care无厘头攻击么?

【 在 TeacherWei (TW) 的大作中提到: 】
: 你说我是OS用户,暗示你自己研究design和principl高我一等?
: 你这种人讲话一贯这个套路,我善意提醒你这是很令人反感的。一贯拿别人都知道的常
: 识夸夸其谈,自己又没有任何真知灼见。我不理解你扯这些蛋有什么意义?有人能放心
: 让你commit哪怕一行C代码到任何正经的项目里面去么?
: 我以前的帖子讲的很清楚,这东西就是这么简单。不需要扯蛋。stack也就是一个指针
: ,硬件上被特殊对待被赋予了一些含义而已。
: 谨言慎行。

l
littlebirds3

装逼写ppt是很重要的技能, 比技术更有价值. 您老太谦虚了.

【 在 chebyshev (......) 的大作中提到: 】
: 当然不是暗示高你一等。应用比底层更有价值,这是个趋势。
: 这个贴里面,肯定是人人都比我更熟悉linux之应用接口。
: 只是你说我与carvel不知道自己在说什么。所以我交代几句背景罢了。
: 我x年前即掌控过release几千万装机量的c代码。
: 与人合作的代码用户之装机则是B数量级的。你的手机,laptop里大概率有我的程序
: 和硬件在跑。你见过我care无厘头攻击么?

c
chebyshev

你自己写个小程序,几万个整数玩一玩,时间计算一下。画图做统计,就知道我在说什么。

与其在老魏的贴里面灌水,不如去下面这个贴聊聊。
当时reedit上也很热门。https://www.mitbbs.com/article_t/Programming/31544093.html
【 在 littlebirds3 (littlebirds) 的大作中提到: 】
: 装逼写ppt是很重要的技能, 比技术更有价值. 您老太谦虚了.

T
TeacherWei

大规模内卷化,呼唤的是在细分领域深耕细作。

装逼写ppt是一个显学。价值是明显的。我当然也需要,但是我需要的是专业的,不需
要业余装逼写ppt人士。

写算法也是同理。你愿意自己团队里混进来一个装逼的么?

内存分页,也并非没有可研究的。这玩意儿标准很简单,把SPEC CPU 2017代码跑一遍
,43个benchmark有多少能beat现有的?几分钟以后一目了然,以德服人。
https://www.spec.org/cpu2017/Docs/overview.html#benchmarks

手里有货,没人在乎你是组合数学还是神经学习。不需要扯蛋。

【 在 littlebirds3 (littlebirds) 的大作中提到: 】
: 装逼写ppt是很重要的技能, 比技术更有价值. 您老太谦虚了.

c
chebyshev

我不是谦虚。我很少用linux。并不了解。最多一知半解。
我经常查的这本OS书封面是NT/UNIX/SOLARIS。
作者william stalling, 3rd version。

T
TeacherWei

你自吹比我懂design和principle,比我熟悉原理的帖子还在上面挂着呢。

现在又说你自己“不了解。最多一知半解。”。。。

有SPEC 2017,谁会像你那样写 一个周期访问的benchmark去做研究?LOL。

【 在 chebyshev (......) 的大作中提到: 】
: 我不是谦虚。我很少用linux。并不了解。最多一知半解。
: 我经常查的这本OS书封面是NT/UNIX/SOLARIS。
: 作者william stalling, 3rd version。

c
chebyshev

就这个贴里面,你说的牛头不对马嘴的东西太多了。
你是实名的。没人愿意纠正你而已。

我好心给你找了slides以及其他link。
意思就是你自己去找课本查书。再说我干嘛要免费教你课本知识?
你还不领情。过一会是不是又要字符串match都不认了?

周期性负载的数据库的多了。不过你不懂而已。
再说了,我有自己写的程序找出来的数据,测出来的cases。
哪用管别人怎么研究。
【 在 TeacherWei (TW) 的大作中提到: 】
: 你自吹比我懂design和principle,比我熟悉原理的帖子还在上面挂着呢。
: 现在又说你自己“不了解。最多一知半解。”。。。
: 有SPEC 2017,谁会像你那样写 一个周期访问的benchmark去做研究?LOL。

T
TeacherWei

你又在扯没用的。现在是我在纠正你,你承认不承认你说的不对?

有没有人愿意纠正我,我没能力强迫别人。我愿意纠正你,是我愿意。

【 在 chebyshev(......) 的大作中提到: 】

: 就这个贴里面,你说的牛头不对马嘴的东西太多了。

: 你是实名的。没人愿意纠正你而已。

: 我好心给你找了slides以及其他link。

: 意思就是你自己去找课本查书。再说我干嘛要免费教你课本知识?

: 你还不领情。过一会是不是又要字符串match都不认了?

: 周期性负载的数据库的多了。不过你不懂而已。

: 再说了,我有自己写的程序找出来的数据,测出来的cases。

: 哪用管别人怎么研究。

c
chebyshev

我扯什么没用的了?上次你说啥cpp compiler by design要
兼容C。你看过cpp标准的目录么?我也是分开贴了spec,间接说一下而已。

这次也是一样。你还不依不饶了。
内存分页,你自己查课本,有多少牛头不对马嘴。
你不可笑么。

我贴的论文已经讲明。
page/cache的优化模型,以及NP证明。
我认为是组合优化一类的。是不是组合优化,我有自己的根据。
你压根不知道迪斯尼排队买票这种问题都是组合优化而已。
我欢迎别人纠正。但是,你懂非线性优化吗?
【 在 TeacherWei (TW) 的大作中提到: 】
: 你又在扯没用的。现在是我在纠正你,你承认不承认你说的不对?
: 有没有人愿意纠正我,我没能力强迫别人。我愿意纠正你,是我愿意。
:
: 就这个贴里面,你说的牛头不对马嘴的东西太多了。
:
: 你是实名的。没人愿意纠正你而已。
:
: 我好心给你找了slides以及其他link。
:
: 意思就是你自己去找课本查书。再说我干嘛要免费教你课本知识?
:
: 你还不领情。过一会是不是又要字符串match都不认了?
:
: 周期性负载的数据库的多了。不过你不懂而已。
:
: 再说了,我有自己写的程序找出来的数据,测出来的cases。
:
: 哪用管别人怎么研究。
: ...................

T
TeacherWei

你刚刚说就在这个贴里面,又拿我很久前的说法反复说事儿。我已经澄清过了,我的意思是能正确编译.c代码,而不是说语法能兼容。就这么一个你逮着反复说,要脸么?

还有往我嘴里塞话的毛病依然没改。你那里看到或者能推论到我针对优化问题和NP有任何评论了?你哪里能看出我懂还是不懂了?

不谨言慎行,会吃大亏的。

【 在 chebyshev(......) 的大作中提到: 】

: 我扯什么没用的了?上次你说啥cpp compiler by design要

: 兼容C。你看过cpp标准的目录么?我也是分开贴了spec,间接说一下而已。

: 内存分页,你自己查课本,有多少牛头不对马嘴。

: page/cache是NP问题。我贴的论文已经讲明。

: 我认为是组合优化一类的。是不是组合优化,我有自己的根据。

: 你压根不知道迪斯尼排队买票这种问题都是组合优化而已。

: 我欢迎别人纠正。但你懂非线性优化吗?

c
chebyshev


"
发信人: TeacherWei (TW), 信区: Programming
标 题: Re: coroutine CPU利用率最高
发信站: BBS 未名空间站 (Wed Jul 21 20:32:47 2021, 美东)

你倒是说说这算哪门子组合数学的难题了?
"

字符串match又不认了是不是。
general cache是NP。

【 在 TeacherWei (TW) 的大作中提到: 】
: 你刚刚说就在这个贴里面,又拿我很久前的说法反复说事儿。我已经澄清过了,我的意
: 思是能正确编译.c代码,而不是说语法能兼容。就这么一个你逮着反复说,要脸么?: 还有往我嘴里塞话的毛病依然没改。你那里看到或者能推论到我针对优化问题和NP有任
: 何评论了?你哪里能看出我懂还是不懂了?
: 不谨言慎行,会吃大亏的。
:
: 我扯什么没用的了?上次你说啥cpp compiler by design要
:
: 兼容C。你看过cpp标准的目录么?我也是分开贴了spec,间接说一下而已。
:
: 内存分页,你自己查课本,有多少牛头不对马嘴。
:
: page/cache是NP问题。我贴的论文已经讲明。
:
: 我认为是组合优化一类的。是不是组合优化,我有自己的根据。
: ...................

T
TeacherWei

你不要丢人了,业界承认你那个模型么?不要拿数据库说事儿,数据库有自己的memory management,根本不是通用的,也轮不到你来优化。

【 在 chebyshev (......) 的大作中提到: 】
: "
: 发信人: TeacherWei (TW), 信区: Programming
: 标 题: Re: coroutine CPU利用率最高
: 发信站: BBS 未名空间站 (Wed Jul 21 20:32:47 2021, 美东)
: 你倒是说说这算哪门子组合数学的难题了?
: "
: 字符串match又不认了是不是。
: general cache是NP。

c
chebyshev

你看过os课本吗?自己查有没有讲周期负载的段落。

你就是个笑话。不过懂的人不说而已。我也不会免费告诉你。
你接着瞎吹而已。

【 在 TeacherWei (TW) 的大作中提到: 】
: 你不要丢人了,业界承认你那个模型么?不要拿数据库说事儿,数据库有自己的
memory
: management,根本不是通用的,也轮不到你来优化。

l
littlebirds3

职业方向的区别, 看你最后是走管理还是坚持技术了. 几乎所有的公司经理薪酬都比技工高,人数也是后者多与前者.可见装逼绝不是看上去这么简单,需要天分,也需要
努力.
我认为能学chebyshev个7,8分,混到dev manager没啥问题. :-)

【 在 TeacherWei (TW) 的大作中提到: 】
: 大规模内卷化,呼唤的是在细分领域深耕细作。
: 装逼写ppt是一个显学。价值是明显的。我当然也需要,但是我需要的是专业的,不需
: 要业余装逼写ppt人士。
: 写算法也是同理。你愿意自己团队里混进来一个装逼的么?
: 内存分页,也并非没有可研究的。这玩意儿标准很简单,把SPEC CPU 2017代码跑一遍
: ,43个benchmark有多少能beat现有的?几分钟以后一目了然,以德服人。
: https://www.spec.org/cpu2017/Docs/overview.html#benchmarks
: 手里有货,没人在乎你是组合数学还是神经学习。不需要扯蛋。

c
chebyshev

你找我过去贴,不管讲对讲错。看下哪句话没有联系数据或者程序之实证,
我可以看下怎么回事。
【 在 littlebirds3 (littlebirds) 的大作中提到: 】
: 职业方向的区别, 看你最后是走管理还是坚持技术了. 几乎所有的公司经理薪酬都比技
: 工级
: 别高些,人数也是后者多与前者.可见装逼绝不是看上去这么简单,需要天分,也需要
: 努力.
: chebyshev的水平学一个7,8分,混到dev manager没啥问题. :-)

c
chebyshev

我有一个知识分页管理系统。
第一层tag, 例如c_axioms,保存与c有关之条目与各种程序段落。
此刻包括有303个items。

发现错误。我就加一条。欢迎批评纠正。

【 在 chebyshev (......) 的大作中提到: 】
: 你找我过去贴,不管讲对讲错。看下哪句话没有联系数据或者程序之实证,
: 我可以看下怎么回事。

l
littlebirds3

所以我说要学你啊, 领导力的原则之一就是永远把数据准备好.

【 在 chebyshev (......) 的大作中提到: 】
: 你找我过去贴,不管讲对讲错。看下哪句话没有联系数据或者程序之实证,
: 我可以看下怎么回事。

c
chebyshev

我有一个知识分页管理系统。
第一层tag, 例如c_axioms,保存与c有关之条目与各种程序段落。
此刻包括有303个items。

发现我的一个错误。我就加一条。
所以当然是欢迎批评纠正。

但是要我加一条:内存管理很简单,stack就是pointer,
或者什么cpp编译器都保证能编译.c文件。
那就免了。
【 在 littlebirds3 (littlebirds) 的大作中提到: 】
: 所以我说要学你啊, 领导力的原则之一就是永远把数据准备好.

c
chebyshev

我怀疑未来的趋势是,人要把大脑里的东西尽可能外包到自己制作的软件系统里。
这也算是学以致用。

另外,我也怀疑,知识的组织软件怎么写?这才是知识。
具体的items未来会不被看作knowledge。

如果也有人正在这么做,不如交流下经验,互相学习。

【 在 chebyshev (......) 的大作中提到: 】
: 我有一个知识分页管理系统。
: 第一层tag, 例如c_axioms,保存与c有关之条目与各种程序段落。
: 此刻包括有303个items。
: 发现错误。我就加一条。欢迎批评纠正。
: 但是要我加一条:内存管理很简单,stack就是pointer,
: 或者什么cpp编译器都保证能编译.c文件。
: 那就免了。

T
TeacherWei

OS课本有讲周期负载,也有讲非周期负载。你这样强词夺理有意思么?

紧接着就肆意人身攻击毫无根据。你这样是不行的。在华人BBS匿名当然没人管得了你
。在美国社会,每次这样搞,都可能是人生最后一次。风险太大的说。

【 在 chebyshev (......) 的大作中提到: 】
: 你看过os课本吗?自己查有没有讲周期负载的段落。
: 你就是个笑话。不过懂的人不说而已。我也不会免费告诉你。
: 你接着瞎吹而已。
: memory

c
chebyshev

"你不要丢人了,业界承认你那个模型么?"

这是你的问题。我想,你现在已经找到答案了。

你攻击我的话,从最开始说我跟carvel不知道自己在讲什么。
根据何在?

【 在 TeacherWei (TW) 的大作中提到: 】
: OS课本有讲周期负载,也有讲非周期负载。你这样强词夺理有意思么?
: 紧接着就肆意人身攻击毫无根据。你这样是不行的。在华人BBS匿名当然没人管得了你
: 。在美国社会,每次这样搞,都可能是人生最后一次。风险太大的说。

T
TeacherWei

你是真傻还是装傻?TLB就是简单的LRU cache,Page Replacement 也是LRU算法。没有人把这个当组合数学问题去研究。

主流的研究,也要拿real world问题做benchmark,比如SPEC CPU之类。

你废话少说,你说目前哪个实现是用组合数学的?

【 在 chebyshev (......) 的大作中提到: 】
: "你不要丢人了,业界承认你那个模型么?"
: 这是你的问题。我想,你现在已经找到答案了。
: 你攻击我的话,从最开始说我跟carvel不知道自己在讲什么。
: 根据何在?

c
chebyshev

你吹的越多,错的越多。

【 在 TeacherWei (TW) 的大作中提到: 】
: 你是真傻还是装傻?TLB就是简单的LRU cache,Page Replacement 也是LRU算法。没有
: 人把这个当组合数学问题去研究。
: 主流的研究,也要拿real world问题做benchmark,比如SPEC CPU之类。
: 你废话少说,你说目前哪个实现是用组合数学的?

T
TeacherWei

当年古德霸也是这样对我说的。。。

【 在 chebyshev (......) 的大作中提到: 】
: 你吹的越多,错的越多。

c
chebyshev

你爱吹就自己吹。
不要攻击我与旁人不知道自己说什么。

【 在 TeacherWei (TW) 的大作中提到: 】
: 当年古德霸也是这样对我说的。。。

T
TeacherWei

写一个简单的循环access memory代码去研究LRU cache性能。
这还需要执行了才知道么?结果不是明显的么?到你那里成了组合数学难题了。
你那里来的底气继续狡辩这么多呢?

【 在 chebyshev (......) 的大作中提到: 】
: 你爱吹就自己吹。
: 不要攻击我与旁人不知道自己说什么。

c
chebyshev

我压根没研究过OS。我就是照着课本看看,别人的代码看看。自己练练。
写码实证是第一优先。

例如周期负载,我做的无非是照着课本的说法跑一下结果。因为这是有名的结果。
我说paging其是组合数学问题,乃是因为按照优化问题之思路,有结果讲这是NP。

所以你攻击我完全是没有意义的。
等于是攻击课本上的作业,以及别人论文上给的结果。
你非要给人家say NO。

【 在 TeacherWei (TW) 的大作中提到: 】
: 写一个简单的循环access memory代码去研究LRU cache性能。
: 这还需要执行了才知道么?结果不是明显的么?到你那里成了组合数学难题了。
: 你那里来的底气继续狡辩这么多呢?

C
Caravel

其实我也不知道魏老师说的是什么,我好像只是说如果不考虑硬件calling convention和历史依赖,function call可以用一个图表示,全部放在内存里面,不一定要用stack实现。

【 在 chebyshev (......) 的大作中提到: 】
: 你爱吹就自己吹。
: 不要攻击我与旁人不知道自己说什么。

c
chebyshev

他就是说,你我二人不知道自己在说什么。LoL
别管他就是了。他是实名的。我不会再说什么了。

====
你说的也是一法。functino call/return的东西放在堆里面,其实也可以。
例如我很少用到多层function call。假如我们定义一种特殊的function,
叫做Func2。Func2只能搞最多两层call,参数什么的都放heap里。
然后加上其他约定。那么caller,callee就能交流信息了。
因为只有2层而已,不用stack push,性能损失应该也不大。

我个人的理解。这个coroutin就是stack与function绑定带来的问题。
【这个理解,不是我发明的。是克努奇说的。我早先不理解。
现在觉得其思路很有道理。】

stack与function脱离,多consumer/producer应该也能做。
【 在 Caravel (克拉维尔) 的大作中提到: 】
: 其实我也不知道魏老师说的是什么,我好像只是说如果不考虑硬件calling
convention
: 和历史依赖,function call可以用一个图表示,全部放在内存里面,不一定要用
stack
: 实现。

iDemocracy

你是学术范,搞学术的唯恐去情绪化不及。他脑子里的操作系统核心是运行在技术之外,他的valuation function不是技术本身。这种情况,要么喂他,要么不理,几乎不存在逻辑推理上和解的机会。

【 在 chebyshev (......) 的大作中提到: 】
: 他就是说,你我二人不知道自己在说什么。LoL
: 别管他就是了。他是实名的。我不会再说什么了。
T
TeacherWei

Caravel那个其实就是functional programming,pass immutable data的套路。其实它那个东西,最直接的反倒是用一个stack machine来模拟。如果不信,可以试试。

余下那二位,赤裸裸的人性在这里摆着,不需多说,加速世界,一切都来得快。。。
g
guvest

有一说一。existing CS这门学问。拿东土的定义来看。我最多也就是考上研究生的水
平而已。因我以前考研考过微机原理。本科上过清华那本绿皮书pascal的数据结构课。也念过计算理论。高等代数我也学过。离散数学研究生时候上过课。

其他的compiler,os之类没有学习过,所以得时不时翻书查书。要考研我就选架构和数
据结
构两门课。估计可以。但是,要让我考博士資格考。一定没戏。還要再至少專門學習一兩年才行。

所以我距离板上从cs本科学到硕士博士的人的水平是非常远的。说什么学术是绝对谈不上,会被人笑话的。

我也有长处,例如:错别字少——这条应该可以统计出来。
【 在 iDemocracy(DEMO) 的大作中提到: 】
<br>: 你是学术范,搞学术的唯恐去情绪化不及。他脑子里的操作系统核心是运行在技
术之外
<br>: ,他的valuation function不是技术本身。这种情况,要么喂他,要么不理,几
乎不存
<br>: 在逻辑推理上和解的机会。
<br>

iDemocracy

知识和学术不是一回事,知识在不同的人手里展现出来的气质也不同。

我很喜欢看一个会思考的人得到一个从未见过的题目而开始入题的表现,以前的导师总能在20分钟之内把别人的博士论文的数学漏洞找出来,哪怕这个课题他从来没钻研过。

【 在 guvest (我爱你老婆Anna) 的大作中提到: 】
: 有一说一。existing CS这门学问。拿东土的定义来看。我最多也就是考上研究生的水
: 平而已。因我以前考研考过微机原理。本科上过清华那本绿皮书pascal的数据结构课。
: 也念过计算理论。高等代数我也学过。离散数学研究生时候上过课。
: 其他的compiler,os之类没有学习过,所以得时不时翻书查书。要考研我就选架构和数
: 据结
: 构两门课。估计可以。但是,要让我考博士資格考。一定没戏。還要再至少專門學習一
: 兩年才行。
: 所以我距离板上从cs本科学到硕士博士的人的水平是非常远的。说什么学术是绝对谈不
: 上,会被人笑话的。
: 我也有长处,例如:错别字少——这条应该可以统计出来。
: ...................
bihai

你说那些肯定是计算机领域的数学,太复杂了。我们EE的数学非常简单,应该不会有漏洞,就是sin, cos什么的。

【 在 iDemocracy (DEMO) 的大作中提到: 】
: 知识和学术不是一回事,知识在不同的人手里展现出来的气质也不同。
: 我很喜欢看一个会思考的人得到一个从未见过的题目而开始入题的表现,以前的导师总
: 能在20分钟之内把别人的博士论文的数学漏洞找出来,哪怕这个课题他从来没钻研过。

C
Caravel

搞学术不就是没事找事,东敲敲西打打,指不定就搞出一片论文

【 在 TeacherWei (TW) 的大作中提到: 】
: Caravel那个其实就是functional programming,pass immutable data的套路。其实它
: 那个东西,最直接的反倒是用一个stack machine来模拟。如果不信,可以试试。
: 余下那二位,赤裸裸的人性在这里摆着,不需多说,加速世界,一切都来得快。。。

g
guvest

科技大年写论文不划算。

【 在 Caravel(克拉维尔) 的大作中提到: 】

: 搞学术不就是没事找事,东敲敲西打打,指不定就搞出一片论文

iDemocracy

大多数CS课题没什么高深的数学,只是很多人没学过数学证明,还得硬着头皮上。

【 在 bihai (学得不好) 的大作中提到: 】
: 你说那些肯定是计算机领域的数学,太复杂了。我们EE的数学非常简单,应该不会有漏
: 洞,就是sin, cos什么的。
iDemocracy

还真是这样。ACM一大半是中国欧洲印度在灌,美国人都被钱买走了。

【 在 guvest (我爱你老婆Anna) 的大作中提到: 】
: 科技大年写论文不划算。
:
: 搞学术不就是没事找事,东敲敲西打打,指不定就搞出一片论文
iDemocracy

楼主搞的属于Computer Engineering,跟Computer Science还是有区别的,术业有专攻,如是而已。
heteroclinic

我打字故意打错,正规通讯最少要再看一遍。各种势力会到MMITBBS抓coporus,我觉得很讨厌,多数出于商业目的。
我写文艺抒情的东西会尽量减少错别字,技术和证论,尽量增加parse的难度。
接着吹,我导师说过我们系有人研究navier stoke,他前一个老中研究生背景很强,不知到混本版yes or no,搞的PDE网格;我老板提这个就是对我种种评估,那个研究生感觉对国外生活种种不适应,我也就不敢说我适应,不过我是坚决panch beck;我老板对
我的种种评估,估计还是认为我最想找到工作进大公司;他也是外国人,种种的不易要比我们稍微容易些,但是学校大佬版大环境搞的竞争,你得不停的折腾。
从课程设置来讲国内的计算机系还相聚遥远,我们系的老头子我昨天又翻了翻;前面说navier stoke就是要走多深有多深,老人三分之一搞纯理论,你随便搞一片看,前几页和邱成桐wiles的文章差不多。就是一层一层的抽象下去,面向对象的设计还是认为人
区别于动物,鸡有很好的短期记忆,graphic memory,比如迅速的刀米,但狗更能抽象
,甚至有相当的词汇量,但不能说所有的狗都比所有的鸡过的快乐。集成电路优化把重复刷的板块,刷成一个,简化真值表,面向对象做的是同一样的事情。
而新人,我昨天又去我们系网页看看,新人基本都是机器学习,挺烦躁。
我很高兴本版猫狗画圈,然后人工调参数的话题很少了,神经病,多傻B信那么好骗。
当然有严肃做学问的也批评过hype。
我的意思是人对自己的定位很重要。象我大学同学失连很多年,去年才入群吧,那些有补习两三年才考上大学的,农村出来的,没有对自己一定期待,也挺不下来。这些人平均也混的不差,也在坚持专业搞工程,教育下一代方面,平均甚至比年纪小学习好d更
有些成就。
最近感慨多谢,当然来这个版的目的就是白话,我们和别人不宜阳的东西。

【 在 guvest (我爱你老婆Anna) 的大作中提到: 】
: 有一说一。existing CS这门学问。拿东土的定义来看。我最多也就是考上研究生的水
: 平而已。因我以前考研考过微机原理。本科上过清华那本绿皮书pascal的数据结构课。
: 也念过计算理论。高等代数我也学过。离散数学研究生时候上过课。
: 其他的compiler,os之类没有学习过,所以得时不时翻书查书。要考研我就选架构和数
: 据结
: 构两门课。估计可以。但是,要让我考博士資格考。一定没戏。還要再至少專門學習一
: 兩年才行。
: 所以我距离板上从cs本科学到硕士博士的人的水平是非常远的。说什么学术是绝对谈不
: 上,会被人笑话的。
: 我也有长处,例如:错别字少——这条应该可以统计出来。
: ...................

iDemocracy

嗯,搞学术是这个范儿。国内搞计算机的有些觉得中国是天下第一了,越是二、三线城市专科生越牛逼哄哄的。搞学术的要么有钱要么不需要钱,天然划分了这个群体的人生观跟国内为了钱而做事的人很不一样。

【 在 heteroclinic (asymptotically stable) 的大作中提到: 】
: 我打字故意打错,正规通讯最少要再看一遍。各种势力会到MMITBBS抓coporus,我觉得
: 很讨厌,多数出于商业目的。
: 我写文艺抒情的东西会尽量减少错别字,技术和证论,尽量增加parse的难度。
: 接着吹,我导师说过我们系有人研究navier stoke,他前一个老中研究生背景很强,不
: 知到混本版yes or no,搞的PDE网格;我老板提这个就是对我种种评估,那个研究生感
: 觉对国外生活种种不适应,我也就不敢说我适应,不过我是坚决panch beck;我老板对
: 我的种种评估,估计还是认为我最想找到工作进大公司;他也是外国人,种种的不易要
: 比我们稍微容易些,但是学校大佬版大环境搞的竞争,你得不停的折腾。
: 从课程设置来讲国内的计算机系还相聚遥远,我们系的老头子我昨天又翻了翻;前面说
: navier stoke就是要走多深有多深,老人三分之一搞纯理论,你随便搞一片看,前几页
: ...................
T
TeacherWei

你和guvest以及iDemocracy是有根本区别的。

搞学术基本的客观性,你还没丢。guvest属于死不认错。iDemocracy人性差得一塌糊涂。其实在座的,包括我在内,都是一样的智力平平。有什么可装的呢?

术业有专攻。学术无禁区。承认不知道自己在说什么,有什么可丢人的呢?

【 在 Caravel (克拉维尔) 的大作中提到: 】
: 搞学术不就是没事找事,东敲敲西打打,指不定就搞出一片论文

c
chebyshev

loop memory 的特殊性/与数据库的关联,以及算法的复杂方面,以及相关文献,都是课本上的段落。不是我发明的。
你让我认什么错?有意见你找课本作者去。

我不理你你要悠着点。我有课本天天查。

TW) 的大作中提到: 】
: 你和guvest以及iDemocracy是有根本区别的。
: 搞学术基本的客观性,你还没丢。guvest属于死不认错。iDemocracy人性差得一塌糊涂
: 。其实在座的,包括我在内,都是一样的智力平平。有什么可装的呢?
: 术业有专攻。学术无禁区。承认不知道自己在说什么,有什么可丢人的呢?

T
TeacherWei

我问过你很多次,哪个课本上说paging system的设计是组合数学的问题了?请你给我
找出来。

课本没写错,是你理解有问题而已。

【 在 chebyshev (......) 的大作中提到: 】
: loop memory 的特殊性/与数据库的关联,以及算法的复杂方面,以及相关文献,都是课
: 本上的段落。不是我发明的。
: 你让我认什么错?有意见你找课本作者去。
: 我不理你你要悠着点。我有课本天天查。
: TW) 的大作中提到: 】

c
chebyshev

不笑话我测loop memory了?可以。我这里的课本上,就在LRU下面紧接着的一段。没看过吧?
所以一开始我就说,你说的LRU什么的,是从用户接口看的。(我就不说不同操作系统,
同一操作系统单核多核可能用不同的policy这回事了)。

优化方面我贴了NP问题的文献对不对。我看了那个文章,认为是组合优化类问题。
且讲明了你可以不同意。

你对那个文献的模型有什么高见,说来听听。是属于哪一类的优化问题,
怎么考虑的。你说的对,我就在笔记加一个item。这是什么大事吗?

但是我要提醒你一点。我二十年前就发表过多目标优化的论文。
一直到硕士,还上过非线性优化的课。我卖过非线性优化的程序。
本版这个方向的也有好几位。你不要吹漏了。

我要做的事就是完善自己笔记的记录。你说我死不认错,属于想多了。
【 在 TeacherWei (TW) 的大作中提到: 】
: 我问过你很多次,哪个课本上说paging system的设计是组合数学的问题了?请你给我
: 找出来。
: 课本没写错,是你理解有问题而已。

c
chebyshev

我最近写的一个程序是全美国所有城市走一遍,
所需之最短路径。谁有类似结果,欢迎私信讨论。
(这问题网上有数据和benchmark)。

【 在 chebyshev (......) 的大作中提到: 】
: 不笑话我测loop memory了?可以。我这里的课本上,就在LRU下面紧接着的一段。没看
: 过吧?
: 所以一开始我就说,你说的LRU什么的,是从用户接口看的。(我就不说不同操作系
统,
: 同一操作系统单核多核可能用不同的policy这回事了)。
: 优化方面我贴了NP问题的文献对不对。我看了那个文章,认为是组合优化类问题。
: 且讲明了你可以不同意。
: 你对那个文献的模型有什么高见,说来听听。是属于哪一类的优化问题,
: 怎么考虑的。你说的对,我就在笔记加一个item。这是什么大事吗?
: 但是我要提醒你一点。我二十年前就发表过多目标优化的论文。
: 一直到硕士,还上过非线性优化的课。我卖过非线性优化的程序。
: ...................

T
TeacherWei

你个蠢货,张口就来“没看过吧”?这个和往别人嘴里塞话是一个毛病。就算爹妈没教过,来美国这么长时间,白大哥没教育过你么?

LRU cache对memory block size敏感不是很正常么?你需要多少智商才能理解这个?

关键是,memory cache和TLB,都是做死在CPU里面,都是简单的公开算法。不需要你去优化,也轮不到你去优化。更不是什么组合数学的难题。这里面,没有你任何事情。这个你迄今都理解不了。你除了会扯蛋,还会啥?

【 在 chebyshev (......) 的大作中提到: 】
: 不笑话我测loop memory了?可以。我这里的课本上,就在LRU下面紧接着的一段。没看
: 过吧?
: 所以一开始我就说,你说的LRU什么的,是从用户接口看的。(我就不说不同操作系
统,
: 同一操作系统单核多核可能用不同的policy这回事了)。
: 优化方面我贴了NP问题的文献对不对。我看了那个文章,认为是组合优化类问题。
: 且讲明了你可以不同意。
: 你对那个文献的模型有什么高见,说来听听。是属于哪一类的优化问题,
: 怎么考虑的。你说的对,我就在笔记加一个item。这是什么大事吗?
: 但是我要提醒你一点。我二十年前就发表过多目标优化的论文。
: 一直到硕士,还上过非线性优化的课。我卖过非线性优化的程序。
: ...................