程序员的自我修养笔记一

cpu极限是4Ghz
软件开发工具和应用程序属于同一层次,都使用OS提供的接口(API:应用程序编程接口)
此接口由运行库提供,linux下是glibc库的api;windows下是win库的api.
运行库由OS的系统调用接口(SI:Systemcall Interface)提供.
系统调用由软件中断(SI)方式实现. linux使用0x80号中断作为系统调用接口

分时系统(TimeSharing System):每个程序都运行一小段时间(时间片)

多任务系统(Multi-tasking):比分时系统更吊当前最流行的,程序以进程方式运行,有优先级(cpu分配资源的方式是抢占式)
有时间片(及其短,短的原因是因为要以优先级为进程调度的最重要因素)
1.5内存不够怎么办?
各进程地址空间得隔离,防止进程间数据干扰;解决方法就是虚拟地址(MMU机制)
1.隔离:32位机器其实有36根地址总线
2.分段:取物理内存中与进程相应大小(颗粒度以进程实际大小为单位)的物理地址作为进程虚拟地址的映射地址.
这种分段方式颗粒度太大,效率低
3.分页:人为分页大小4KB为最小颗粒

而今MMU已被继承到cpu内部了
1.6众人拾柴火焰高
1线程:轻量级进程(LWP),各线程共享代码段,堆 而寄存器和栈是独立/私有的
线程数>=<内核数时,出现了真正的线程和线程调度两种情况,在线程调度中
线程又分为:运行,就绪,等待态.线程有各自的时间片(Time Slice):时间片用尽即进入就绪态
没用尽则进入等待态,系统调度其它就绪态线程运行.
频繁等待的线程称为IO密集型线程(IO Bound Thread);很少等待的线程为CPU密集型线程
......
linux下的fork
2线程安全:
竞争和原子操作,当两个线程对全局变量i = 1同时++ --时,会出现0,1,2三总情况,原因是"++ --"操作不是原子操作
同步和锁:互斥锁,读写锁,信号量,条件变量 具体看linux总结,有点忘了  (可重入)
3多线程内部情况:
......

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值