操作系统-linux

操作系统

Linux 系统下你关注过哪些内核参数,说说你知道的。

这里写图片描述 
Tcp/ip io cpu memory 
net.ipv4.tcp_syncookies = 1 
#启用syncookies 
net.ipv4.tcp_max_syn_backlog = 8192 
#SYN队列长度 
net.ipv4.tcp_synack_retries=2 
#SYN ACK重试次数 
net.ipv4.tcp_fin_timeout = 30 
#主动关闭方FIN-WAIT-2超时时间 
net.ipv4.tcp_keepalive_time = 1200 
#TCP发送keepalive消息的频度 
net.ipv4.tcp_tw_reuse = 1 
#开启TIME-WAIT重用 
net.ipv4.tcp_tw_recycle = 1 
#开启TIME-WAIT快速回收 
net.ipv4.ip_local_port_range = 1024 65000 
#向外连接的端口范围 
net.ipv4.tcp_max_tw_buckets = 5000 
#最大TIME-WAIT数量,超过立即清除 
net.ipv4.tcp_syn_retries = 2 
#SYN重试次数 
echo “fs.file-max=65535” >> /etc/sysctl.conf 
sysctl -p

http://www.haiyun.me/category/system/

Linux 下 IO 模型有几种,各自的含义是什么。

阻塞式io,非阻塞io,io复用模型,信号驱动io模型,异步io模型。 
https://yq.aliyun.com/articles/46404 
https://yq.aliyun.com/articles/46402

epoll 和 poll 有什么区别。

select的本质是采用32个整数的32位,即32*32= 1024来标识,fd值为1-1024。当fd的值超过1024限制时,就必须修改FD_SETSIZE的大小。这个时候就可以标识32*max值范围的fd。 
对于单进程多线程,每个线程处理多个fd的情况,select是不适合的。 
1.所有的线程均是从1-32*max进行扫描,每个线程处理的均是一段fd值,这样做有点浪费 
2.1024上限问题,一个处理多个用户的进程,fd值远远大于1024 
所以这个时候应该采用poll, 
poll传递的是数组头指针和该数组的长度,只要数组的长度不是很长,性能还是很不错的,因为poll一次在内核中申请4K(一个页的大小来存放fd),尽量控制在4K以内 
epoll还是poll的一种优化,返回后不需要对所有的fd进行遍历,在内核中维持了fd的列表。select和poll是将这个内核列表维持在用户态,然后传递到内核中。但是只有在2.6的内核才支持。 
epoll更适合于处理大量的fd ,且活跃fd不是很多的情况,毕竟fd较多还是一个串行的操作 
https://yq.aliyun.com/articles/10525

平时用到哪些 Linux 命令。

Ls,find,tar,tail,cp,rm,vi,grep,ps,pkill等等 
https://yq.aliyun.com/articles/69417?spm=5176.100240.searchblog.18.Zrbh9R

用一行命令查看文件的最后五行。

Tail -n 5 filename

用一行命令输出正在运行的 java 进程。

ps -ef|grep Java

介绍下你理解的操作系统中线程切换过程。

控制权的转换,根据优先级切换上下文(用户,寄存器,系统) 
http://www.cnblogs.com/kkshaq/p/4544426.html

进程和线程的区别。

Linux 实现并没有区分这两个概念(进程和线程) 
1. 进程:程序的一次执行 
2. 线程:CPU的基本调度单位 
一个进程可以包含多个线程。

http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html

 

操作系统

1. Linux 系统下你关注过哪些内核参数,说说你知道的。

 

2. Linux 下 IO 模型有几种,各自的含义是什么。

 

3. epoll 和 poll 有什么区别。

 

4. 平时用到哪些 Linux 命令。

 

5. 用一行命令查看文件的最后五行。

 

[plain] view plain copy

  1. 输出test文件的后五行:  
  2.    
  3. liyi@liyi:~/Desktop > tail -n 5 test  
  4.    
  5. 输出test文件的前五行:  
  6.    
  7. liyi@liyi:~/Desktop > head -n 5 test  

 

6. 用一行命令输出正在运行的 java 进程。

 

7. 介绍下你理解的操作系统中线程切换过程。

 

8. 进程和线程的区别。

你可能感兴趣的:(面试)