OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3621|回复: 13

操作系统的问题

[复制链接]

90

主题

534

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1059
金钱
1059
注册时间
2017-4-12
在线时间
280 小时
发表于 2019-3-18 11:30:59 | 显示全部楼层 |阅读模式
1金钱
很么是进程和线程啊,百度来的太抽象,有大神能化形象点吗?

最佳答案

查看完整内容[请看2#楼]

这个玩意儿我不是很好找个比喻来解说,尽量说说吧。 假如有一个下棋高手,非常厉害,很多人都想挑战他,如是他就让这些挑战者同时来挑战他(高手是单核CPU,挑战者是各种任务)。 他就摆了一圈桌子,自己在这一圈桌子中间,桌子外圈是各个挑战者,这个高手先从1号桌开始走棋,走一步之后, 这个高手就去2号桌走棋,然后是3号桌、4号桌...依次轮序下去,这期间各位挑战者趁着这个高手走别人桌子上的棋的时候自己也走了 一步棋 ...
穷不可怕,可怕的是穷的是我~~~
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

33

主题

984

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8024
金钱
8024
注册时间
2014-8-13
在线时间
1595 小时
发表于 2019-3-18 11:31:00 | 显示全部楼层
这个玩意儿我不是很好找个比喻来解说,尽量说说吧。
假如有一个下棋高手,非常厉害,很多人都想挑战他,如是他就让这些挑战者同时来挑战他(高手是单核CPU,挑战者是各种任务)。

他就摆了一圈桌子,自己在这一圈桌子中间,桌子外圈是各个挑战者,这个高手先从1号桌开始走棋,走一步之后,
这个高手就去2号桌走棋,然后是3号桌、4号桌...依次轮序下去,这期间各位挑战者趁着这个高手走别人桌子上的棋的时候自己也走了
一步棋。就这样,这个高手一个人和非常多的人轮流依次下棋。(CPU时间分片,依次处理各种任务)。

这个高手非常厉害,下象棋,围棋,国际象棋,五子棋,跳跳棋,飞行棋...桌子的排列也分组,来挑战象棋的有18位,就安排在1-18号桌,
围棋挑战者有25人,安排在19-43号桌,其他依次类推。

用比方来说的话,每张桌子就是一个线程,每种棋类就是一个进程。(操作系统里也是类似的,真正执行任务单元的是线程,进程只是某“个”
任务的所有线程一个归类集合)。

当然,这是单核CPU情形,而且执行顺序也不是顺序的,各种线程执行优先级也不同,还有穿插转跳,任务调度,现场保护等等各种比较复
杂的机制。(CPU时间分片针对的对象也未必全是线程)。

到多核CPU,那就是任务分配到几个CPU上,还要保证CPU核心之间的调度(比如任务量轻重不一,尽量不让CPU核心空置)和同步(比如有
些任务需要用到其他CPU的运算结果,就要同步)等等一系列更加复杂的问题。

管理好CPU只是操作系统管理好系统资源的一个部分(当然是非常重要的部分),还有其他的低速外设或者实时设备等等,这中间牵扯到的
算法非常复杂,算是人类智慧精华。并且相当一部分算法并不是说有绝对的最优解,更多的是用在一种任务上A算法合适,用来另外一种任务上
B算法合适之类的,没有最优解,没有对错。(比如linux在2.6之后更换了APC算法,好像是这样,记忆不是很清晰。更换APC算法的原因就是
现在的linux面对的更多的是网络化、多任务、定制化(之前也定制化),更加分布的任务,之前的那种本地化的算法不太适合现在的情形了。
但是两种算法都是没有错的,也没办法说那种APC更好,实际上新的APC争议更多)。


题外话,再说说windows开发和linux开发吧。
windows开发比较方便,这方面微软做的非常好,其中一个方面就包括:windows开发基本上会一种
语言就可以了。要完成某个windows开发任务,你可以用VB,C/C++,C#,java,python...当中的任何一种语言,而且可以只会其中的一种语言,
一种语言就足够(当然还有适合的问题)。
linux开发就是另外一回事了,你需要会各种各样的语言,而且缺一不可。你可能需要shell脚本,make脚本,C语言(当然java这种通用平台语言可能
会要求低一些)甚至有可能还要懂一点硬件电路知识等等等等,只要用的到的,就都要必须会才能做出一个东西来。

所以windows开发经常可以招那些入门级的人,但是linux开发的人多半都是掌握了很多开发技术的老鸟大神了。(当然,windows和linux系统原理上还
是有非常非常多的共通的地方)。

Mac或者ios做的比较少(个人也非常不喜欢苹果),不评论。
回复

使用道具 举报

57

主题

1680

帖子

3

精华

资深版主

Rank: 8Rank: 8

积分
4306
金钱
4306
注册时间
2018-6-30
在线时间
808 小时
发表于 2019-3-18 11:48:51 | 显示全部楼层
没有弄过,帮顶!
业精于勤荒于嬉;行成于思毁于随!
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2019-3-20 02:45:11 | 显示全部楼层
mack13013 发表于 2019-3-18 12:56
这个玩意儿我不是很好找个比喻来解说,尽量说说吧。
假如有一个下棋高手,非常厉害,很多人都想挑战他,如 ...

我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2019-3-20
在线时间
3 小时
发表于 2019-3-20 09:56:31 | 显示全部楼层
你可以这样理解,以前你只有一个main()函数,自从有了线程之后你就有好几个main()函数了(只是他们的名字不同),在另外一个main函数里的延时啊,死循环之类的并不影响这边的运行,这就是线程,他是独立的.进程的话,我没想好怎么形象解释....
回复

使用道具 举报

15

主题

866

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7557
金钱
7557
注册时间
2016-11-30
在线时间
642 小时
发表于 2019-3-20 19:30:37 | 显示全部楼层
mack13013 发表于 2019-3-18 12:56
这个玩意儿我不是很好找个比喻来解说,尽量说说吧。
假如有一个下棋高手,非常厉害,很多人都想挑战他,如 ...

大牛   
回复

使用道具 举报

18

主题

323

帖子

1

精华

高级会员

Rank: 4

积分
935
金钱
935
注册时间
2017-12-11
在线时间
196 小时
发表于 2019-3-20 20:26:16 来自手机 | 显示全部楼层
进程是PC问题,pc系统规线程是不能单独存在的,必需要个载体,这就是进程。
回复

使用道具 举报

18

主题

323

帖子

1

精华

高级会员

Rank: 4

积分
935
金钱
935
注册时间
2017-12-11
在线时间
196 小时
发表于 2019-3-20 20:28:45 来自手机 | 显示全部楼层
线程类似于运行于CPU最底层的多任务内核,但区别是多任务内核,可以运行在底层,也可以运行在应用层
回复

使用道具 举报

18

主题

323

帖子

1

精华

高级会员

Rank: 4

积分
935
金钱
935
注册时间
2017-12-11
在线时间
196 小时
发表于 2019-3-20 20:33:16 来自手机 | 显示全部楼层
线程与N核N线程,不一样的地方在于,N线程类似于虚拟核,可以理解为一个只有部分核功能,没有核资源(内部缓存,各种内部功能设备,各种运算模块)的缩水核
回复

使用道具 举报

18

主题

323

帖子

1

精华

高级会员

Rank: 4

积分
935
金钱
935
注册时间
2017-12-11
在线时间
196 小时
发表于 2019-3-20 20:37:45 来自手机 | 显示全部楼层
英特尔认为,多一个核,所带来的优势太明显,但全功能的核造价太高,资源比核贵的非常多,所以超线程诞生,但AMD不这么认为
回复

使用道具 举报

18

主题

323

帖子

1

精华

高级会员

Rank: 4

积分
935
金钱
935
注册时间
2017-12-11
在线时间
196 小时
发表于 2019-3-20 20:52:22 来自手机 | 显示全部楼层
不过PC编程多用多对象,少用多线程,多任务,由于pc程序并不是运行在CPU时钟之上gcc--10Mhz, C++1Mhz, 其它.net编程(c#, java, vc, vb, vf)--200hz以内,所以多线程并没有意义,所以多对象横空出世,多对象的特点,高度克隆,高度可重复,虽然跑的不快,但克隆性非常高
回复

使用道具 举报

90

主题

534

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1059
金钱
1059
注册时间
2017-4-12
在线时间
280 小时
 楼主| 发表于 2019-3-21 09:12:09 | 显示全部楼层
wlq390934605 发表于 2019-3-20 20:52
不过PC编程多用多对象,少用多线程,多任务,由于pc程序并不是运行在CPU时钟之上gcc--10Mhz, C++1Mhz, 其它 ...

666...看不懂了。。
穷不可怕,可怕的是穷的是我~~~
回复

使用道具 举报

18

主题

323

帖子

1

精华

高级会员

Rank: 4

积分
935
金钱
935
注册时间
2017-12-11
在线时间
196 小时
发表于 2019-3-21 21:45:09 来自手机 | 显示全部楼层
VC,c#,java跑的很慢,多数情况下不超过50次每秒的刷新
回复

使用道具 举报

90

主题

534

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1059
金钱
1059
注册时间
2017-4-12
在线时间
280 小时
 楼主| 发表于 2019-3-22 09:21:46 | 显示全部楼层
wlq390934605 发表于 2019-3-21 21:45
VC,c#,java跑的很慢,多数情况下不超过50次每秒的刷新

大牛,膜拜大神
穷不可怕,可怕的是穷的是我~~~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-12 15:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表