垂死挣扎-1
进程控制块是描述进程状态和特性的数据结构,一个进程只能有惟一的进程控制块。
编译:进行语法检查、函数分配空间,将各个函数编译成二进制码,按照特定目标文件格式生成目标文件。
连接:把程序中各个文件编译生成的目标文件连接起来,同时还要同系统提供的资源(如函数库)连接成为一个整体,得到可执行文件。
运行:执行连接好的程序。
重定位:把程序的逻辑地址空间变换成内存中的实际物理地址空间的过程,也就是说在装入时对目标程序中指令和数据的修改过程。
某计算机系统中有 8 台打印机,由 K 个进程竞争使用,每个进程最多需要 3台打印机。该系统可能会发生死锁的 K 的最小值是
由于每个进程最多需要3台打印机就可以正常结束,释放占有的资源。那么现在有K个进程,最差的情况是这个k个进程每个进程分配了两台打印机,那么进程僵持在这里每个都在等待分配第三台打印机,只要还有一台打印机,进程就就能陆续释放,不会产生死锁,所以不产生死锁的条件是2k+1<=8 即k<3.5,所以可能发生死锁的k的最小值(整数)是4
程序链接的方式一共有三种:
1.静态链接方式(Static Linking)
2.装入时动态链接(Load-time Dynamic Linking)
3.运行时动态链接(Run-time Dynamic Linking)
A类:1.0.0.1~126.255.255.254 第一个字节范围1~126(0000 0001~0111 1110) ‘0’开头
B类:128.0.0.1到191.255.255.254第一个字节范围128~191 (1000 0000~1011 1111)‘10’开头
C类:192.0.0.1到223.255.255.254第一个字节范围192~223 (1100 0000~1101 1111)‘110’开头
1. A类地址 ⑴ A类地址第1字节为网络地址,其它3个字节为主机地址。另外第1个字节的最高位固定为0。 ⑵ A类地址范围:1.0.0.1到126.255.255.254。 ⑶ A类地址中的私有地址和保留地址: ①10.0.0.0到10.255.255.255是私有地址(所谓的私有地址就是在互联网上不使用,而被用在局域网络中的地址)。 ② 127.0.0.0到127.255.255.255是保留地址,用做循环测试用的。 2. B类地址 ⑴ B类地址第1字节和第2字节为网络地址,其它2个字节为主机地址。另外第1个字节的前两位固定为10。 ⑵ B类地址范围:128.0.0.1到191.255.255.254。 ⑶ B类地址的私有地址和保留地址 ① 172.16.0.0到172.31.255.255是私有地址 ②169.254.0.0到169.254.255.255是保留地址。如果你的IP地址是自动获取IP地址,而你在网络上又没有找到可用的DHCP服务器,这时你将会从169.254.0.0到169.254.255.255中临得获得一个IP地址。 3. C类地址 ⑴C类地址第1字节、第2字节和第3个字节为网络地址,第4个个字节为主机地址。另外第1个字节的前三位固定为110。 ⑵ C类地址范围:192.0.0.1到223.255.255.254。 ⑶ C类地址中的私有地址:192.168.0.0到192.168.255.255是私有地址。
1
2
3
|
SMTP:定义了简单邮件传送协议,现在很多邮件服务器都用的是这个协议,用于发送邮件。 如常见的免费邮件服务中用的就是这个邮件服务端口,所以在电子邮件设置中常看到有这么SMTP端口设置这个栏, 服务器开放的是 25 号端口。 |
---
1
2
3
4
5
6
|
FTP: 21 端口用于连接, 20 端口用于传输数据 进行FTP文件传输中,客户端首先连接到FTP服务器的 21 端口,进行用户的认证,认证成功后,要传输文件时,服务器会开一个 端口为 20 来进行传输数据文件。 也就是说,端口 20 才是真正传输所用到的端口,端口 21 只用于FTP的登陆认证。我们平常下载文件 时,会遇到下载到 99 %时,文件不完成,不能成功的下载。其实是因为文件下载完毕后,还要在 21 端口再行进行用户认证,而下载文 件的时间如果过长,客户机与服务器的 21 端口的连接会被服务器认为是超时连接而中断掉,就是这个原因。解决方法就是设置 21 端口 的响应时间。 |
255,255,240,0对应的二进制是11111111|11111111|11110000|00000000,我们知道最后一个1之前是子网,那么对应的剩下的位置就是可放置的主机数,因此是2的12次幂,4096
子网掩码中所有0的位数就是主机的位数,总共12位,所以可以有2的12次方,总共4096个,但是要除去全0和全1,最后只有4094个
如果在一个建立了TCP连接的socket上调用recv函数,返回值为0,则表示对端关闭了连接
返回说明:
成功执行时,返回接收到的字节数。
另一端已关闭则返回0。
失败返回-1,
server为多为静态内容时,开启keep-alive,增加传输效率。动态请求,已占用的资源得不到释放,效率低下。
我们知道现在咱用的小塑料盒宽带路由器,可以为WAN口配置一个IP地址,或者通过PPPOE方式获取到一个IP地址,LAN口可以设定一个IP地址,这样的话,最多也就只能接入两个网段。因为它没有虚接口(也叫子接口)功能。 高端的电信级路由器,可以在一个物理端口上设置划分出虚接口(子接口),并为每一个子接口配置IP地址和路由策略。它的上/下联链路使用标准的802.1Q VLAN TRUNK方式接入,我们知道根据IEEE的规范,最大可以有4096个VLAN,这样的话,TRUNK链路里最多就可以包含4096个网段。而如果两个物理接口分别接入4096个VLAN,且每个VLAN通过可变长掩码等方式使各网段地址均不直接相通,则一个两端口的路由器两侧均有4096个网段,两侧加在一起就是8192个网段,当然大于4个了。
crontab 分六大块组成,具体如下:
MIN(分钟) HOUR(小时) DAY(日期) MONTH(月份) DAYOFWEEK(星期) COMMAND(命令)
/etc/services 文件是记录网络服务名和它们对应使用的端口号及协议。
/etc/nsswitch.conf 规定通过哪些途径以及按照什么顺序通过这些途径来查找特定类型的信息。还可以指定某个方法奏效或失效时系统将采取什么动作。
/etc/hosts 是配置ip地址和其对应主机名的文件,这里可以记录本机的或其他主机的ip及其对应主机名。不同的linux版本,这个配置文件也可能不同
文件/etc/nsswitch.conf(name service switch configuration ,名字服务切换配置 ) 规定通过哪些途径以及按照什么顺序通过这些途径来查找特定类型的信息。还可以指定某个方法奏效或失效时系统将采取什么动作。
Nsswitch.conf中的每一行配置都指明了如何搜索信息,每行配置的格式如下:
Info: method[[action]] [method[[action]]...]
其中,info 指定该行所描述的信息的类型, method 为用来查找该信息的方法, action 是对前面的 method 返回状态的响应。 action要放在方括号里。
Nsswitch.conf中的每一行配置都指明了如何搜索信息,每行配置的格式如下:
Info: method[[action]] [method[[action]]...]
其中,info 指定该行所描述的信息的类型, method 为用来查找该信息的方法, action 是对前面的 method 返回状态的响应。 action要放在方括号里。
LINUX的硬链接不能链接到目录是因为引入了对目录的硬连接就有可能在目录中引入循环,在目录遍历的时候系统就会陷入无限循环当中,这样导致无法定位到访问目录。
硬链接:为原文件创建一个新的文件名,但本质中只增加了一个目录项,并使用与原来相等的inode,指向
原文件的区域。数据区为两个名字共享。
使用限制:源文件和链接文件必须在同一个文件系统内,且目录文件不能创建硬链接。
命令:ln a b // 给a创建链接文件b
可以使用ls -i查看两个inode是完全一样的。
同时注意连接计数count。count的意义对于文件来说是硬链接的个数,对于目录,一般(count-2)为目录包含的子文件个数。
注意:两者的权限也是完全一样的。对其中一个进行读写操作,另外一个也会更新。但删除其中一个,只会删除目录项,不会删除存储区数据。另外一个文件的使用和操作完全不受影响。除非count-1结果0,才将数据区删除。 作用:节省空间,两个文件能同步更新,防止重要文件被“误删”。 软链接:也叫符号链接。本质是创建一个新的文件,保存源文件的路径名。因此inode和源文件的inode是不一样的。使用没有文件系统的限制,也没有文件和目录的限制。 命令:ln -s a b 注意:产生的文件权限和源文件是不一样的。由于软链接使用比较灵活,可能断链,也可以自循环,往往需要多次查找增加文件操作的步骤而降低效率。尽量少用,并避免出现循环。
符号链接也叫软连接。
硬链接是一个文件有一个或多个文件名。
软连接是一个文件内存在另一个文件的指向。
硬链接是一个文件有一个或多个文件名。
软连接是一个文件内存在另一个文件的指向。
1、硬连接适用于在同一个卷的文件级别,不允许给目录创建硬链接;
2、硬连接是不能跨卷的,只有在同一文件系统中的文件之间才能创建链接。
2、硬连接是不能跨卷的,只有在同一文件系统中的文件之间才能创建链接。
wc -l只输出文件行数
Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。
1.命令格式:
wc [选项]文件...
2.命令功能:
统计指定文件中的字节数、字数、行数,并将统计结果显示输出。该命令统计指定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所指定文件的总统计数。
3.命令参数:
-c 统计字节数。
-l 统计行数。
-m 统计字符数。这个标志不能与 -c 标志一起使用。
-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
-L 打印最长行的长度。
-help 显示帮助信息
--version 显示版本信息
4.使用实例:
实例1:查看文件的字节数、字数、行数
命令:
wc test.txt
输出:
[root@localhost test]# cat test.txt
hnlinux
peida.cnblogs.com
ubuntu
ubuntu linux
redhat
Redhat
linuxmint
[root@localhost test]# wc test.txt
7 8 70 test.txt
[root@localhost test]# wc -l test.txt
7 test.txt
[root@localhost test]# wc -c test.txt
70 test.txt
[root@localhost test]# wc -w test.txt
8 test.txt
[root@localhost test]# wc -m test.txt
70 test.txt
[root@localhost test]# wc -L test.txt
17 test.txt
说明:
7 8 70 test.txt
行数 单词数 字节数 文件名
实例2:用wc命令怎么做到只打印统计数字不打印文件名
命令:
输出:
[root@localhost test]# wc -l test.txt
7 test.txt
[root@localhost test]# cat test.txt |wc -l
7[root@localhost test]#
说明:
使用管道线,这在编写shell脚本时特别有用。
实例3:用来统计当前目录下的文件数
命令:
ls -l | wc -l
输出:
[root@localhost test]# cd test6
[root@localhost test6]# ll
总计 604
---xr--r-- 1 root mail 302108 11-30 08:39 linklog.log
---xr--r-- 1 mail users 302108 11-30 08:39 log2012.log
-rw-r--r-- 1 mail users 61 11-30 08:39 log2013.log
-rw-r--r-- 1 root mail 0 11-30 08:39 log2014.log
-rw-r--r-- 1 root mail 0 11-30 08:39 log2015.log
-rw-r--r-- 1 root mail 0 11-30 08:39 log2016.log
-rw-r--r-- 1 root mail 0 11-30 08:39 log2017.log
[root@localhost test6]# ls -l | wc -l
8
[root@localhost test6]#
说明:
数量中包含当前目录
Linux执行ls,会引起哪些系统调用
shell命令执行机制就是 fork+exec, fork是分身,execve是变身。ls命令要列出目录下的文件,所以read也会调用。
注意题目说的是系统调用(System Call)不是库函数,是linux内核提供给外界的接口,库函数只是封装了这些接口而已
ls会读文件夹所以用了read,
调用ls这个程序的时候会使用execv,
题目没说是shell里调用ls所以没有fork,也许是你代码里手动通过exec系的函数调用ls
nmap也就是Network Mapper,最早是Linux下的网络扫描和嗅探工具包。nmap 是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。
execve 函数是所有执行程序函数最底层的实现