千家信息网

计算机及操作系统原理

发表于:2024-11-22 作者:千家信息网编辑
千家信息网最后更新 2024年11月22日,计算机及操作系统原理:OS32bit , 64bit , 2^32=4G 2^64几乎无穷大CPU线路复用PAE:Physical Address Extension 物理地址扩展32bit,+4bi
千家信息网最后更新 2024年11月22日计算机及操作系统原理

计算机及操作系统原理:

OS
32bit , 64bit , 2^32=4G 2^64几乎无穷大
CPU线路复用
PAE:Physical Address Extension 物理地址扩展
32bit,+4bit = 64G
程序具有局部性, 置换策略
空间局部性,时间局部性
CPU具有多级缓存 多级缓存静态RAM
N路关联
缓存缩影

路数越多命中几率越大
逐级置换
CPU只跟一级缓存打交道
Write through 通写
Write Back 回写 数据在丢失的时候写入主存
显卡 Video Card 需要与CPU直接交互
PCI-E SSD M2
IO Port 一片连续端口 总线复用
poll机制 通知机制
中断控制器 Interrupt Controller
临界区 有可能产生竞争的地方
DMA:直接内存访问

OS:VM
CPU:
时间,切片
缓存,缓存当前程序数据
进程切换:保存现场、恢复现场

内存分隔
4K,page , page frame(页框)
指令,数据,堆,栈
进程描述结构
线性地址 虚拟地址 页目录
物理地址
目录是一种映射关系
内存,将物理地址转换成线性地址 可以实现内存保护 空间映射

I/O操作 中断
内核 --> 进程
CPU有两种模式 :用户模式,内核模式
CPU 4层环模式
模拟 仿真
进程状态:
Ready
Sleeping
可打断
不可打断

进程与操作系统之间关系:


进程描述符
进程元数据
双向链表

linux支持进程抢占
系统时钟,内部时钟频率 tick 时钟中断
进程类型:
交互式进程(I/O)
批处理进程(CPU密集型)
实时进程(Real-time)

CPU:时间片长,优先级低
IO :时间片短,优先级高

Linux优先级:priority
实时优先级:1-99,数字越小,优先级越低
静态优先级:100-139,数字越小,优先级越高
-20 0 19 100 ,139 nice为0 对应静态优先级 100
实时优先级比静态优先级高
ps -e -o class,rtprio,pri,nice,cmd
nice值:调整静态优先级
有中括号表示内核线程

调度类别:
实时进程:
SCHED_FIFO First In First out
SCHED_RR Round Robin
SCHED_Other:用来调度100-139之间的进程
动态优先级:
dynamic priority = max(100,min (static priority -bonus +5,139) )
手动调整优先级:
100-139 nice
nice N COMMAND
renice -n # PID
chrt -p [prio] PID
1-99
chrt -f -p [prio] PID
chrt -r -p [prio] PID

Linux系统139个队列
扫描队列 99-1,100-139 活动队列和过期队列 两者对换
linux2.6以后 CPQ:Complete Fair Scheduler SCHED_Other

Kernel --> init
init fork():系统调用
task_struct
Memory -->Parent
COW :Copy On Write
RHEL6.4
tick less 无时钟中断
interrupt-driven
硬中断
软中断
深度睡眠
一级缓存 I1 指令1,D1 Data1
SMP 对称多处理器 一个CPU插槽叫一个socket
NUMA 非统一内存访问

numastat 命令
numactl命令
numad命令

CPU affinity:CPU姻亲关系
taskset:绑定进程至某CPU上
for example :
taskset -p mask pid
taskset -p -c 0-2,7 101 将101进程绑定在cpu0,1,2,7上
应该将中断绑定至那些非隔离的CPU上,从而避免那些隔离的CPU处理中断程序;
echo CPU_MASK > /proc//smp_affinity

rpm -qf sysstat
mpstat
vmstat
sar -w 上下文切换的次数
taskset -p -c 0 16380

虚拟化环境:
PA ->HA ->MA
虚拟机转换:PA->HA
GuestOS, OS
Shadow PT
Memory:
TLB:提升性能
Hugetable page
hugetlbfs 文件系统
cat /proc/meminfo | grep Hugepages

sysctl -w vm.nr_hugepages=10 启用大页面

strace :
strace COMMAND :查看命令的syscall
strace -p PID :查看已经启动进程的syscall
-c :中输出其概括信息;
-o FILE :将追踪结果保存至文件中,以供后续分析使用;

slab

Strategies for using memory

1、降低微型内存对象的系统开销
slab
2、缩减慢速子系统的服务时间
使用buffer cache 缓存文件元数据
使用page cache缓存DISK IO;
使用shm完成进程间通信;
使用buffer cache ,arp cache 和connetion tracking提升网络IO性能
内存耗尽,系统崩溃
Tuning page allocation

物理内存的过量使用是以swap为前提的:
超过物理内存一部分
Swap
Tuning overcommit

ls /proc/1 oom_score
slabtop命令

slab cache

ARP cache

Tuning ARP cache

Page cache


vfs_cache_pressure
0:不回收dentries和inodes;
1-99 :倾向于不回收;
100:倾向性与page cache 和 swap cache相同;
100+:倾向于回收;

使用swap时会使用到page-cluster 虚拟化环境会使用到

Anonymous pages

进程间通信使用匿名页

/proc , /sys
CPU使用,内存使用
性能指标,关闭不必要进程
性能调优:
进程管理,CPU
内存调优
I/O
文件系统
网络子系统

调优思路:
性能指标,定位瓶颈
综合调优
系统级别调优工具:
SystemTap
Oprofile
Valgrind
Perf

进程间通信管理类命令
ipcs -l
ipcrm
sharememory
shmmni:系统级别,所允许使用的共享内存段上限;
shmall :系统级别,能够为共享内存分配使用的最大页面数;
shmmax:单个共享内存段的上限;
Message
msgmnb:单个消息队列的上限,单位为字节;
msgmni:系统级别,消息队列个数上限;
msgmax:单个消息大小的上限,单位为字节;
按需调整,一般情况都是调大

Tuning pdflush

1、周期性,2、观察式 3、脏页占有率

手动清写脏缓存和缓存

内存耗尽时
Out-of-memory killer


oom-adj
-17:disables the oom_killer for that process
-16-15 :协助计算oom-score
oom-adj超高,oom-score分数越大,被杀死几率越大
内存泄露查看方法:
valgrind --tool=memcheck cat /proc/$$/maps

内存子系统需要调节的几大类
HugePage :TLB
IPC
pdflush
slab
swap
oom

0