LINUX配置启动级别的文件名称,路径以及个级别分别是什么
配置启动级别文件名:inittab 路径/etc/ 共有7个级别: l0:0:wait:/etc/rc.d/rc 0 l1:1:wait:/etc/rc.d/rc 1 l2:2:wait:/etc/rc.d/rc 2 l3:3:wait:/etc/rc.d/rc 3 l4:4:wait:/etc/rc.d/rc 4 l5:5:wait:/etc/rc.d/rc 5 l6:6:wait:/etc/rc.d/rc 6 0:关机(不要设置为启动默认级别) 1:单用户模式 2:多用户,无NFS(如果您没有配置网络,该级别与3一样) 3:完全多用户模式 4:不使用 5:X11图形模式 6:重启(不要设置为启动默认级别) Linux 启动时,运行一个叫做init 的程序,然后由它来启动后面的任务,包括多用户环境,网络等。
那么,到底什么是运行级别呢?简单的说,运行级就是操作系统当前正在运行的功能级别。这个级别从1 到6,具有不同的功能。这些级别在/etc/inittab 文件里指定。这个文件是init 程序寻找的主要文件,最先运行的服务是那些放在/etc/rc.d 目录下的文件。大多数的Linux 发行版本中,启动脚本放在/etc/rc.d/init.d,这些脚本被ln 命令来连接到 /etc/rc.d/rcn.d目录(这里的n 就是运行级0-6)。如:/etc/rc.d/rc5.d 下面的S10network就是连接到/etc/rc.d/init.d下的network 脚本的。因此,我们可以知道,rc5.d 下面的文件就是和运行级5 有关的。rnotify是干什么用的
唤醒在监视器对象上等待的单个线程,此时调用该方法的代码继续执行。
notifyAll: 唤醒在监视器对象上等待的所有线程,此时调用该方法的代码继续执行。
第一、为什么会有wait/notify/notifyAll这几个方法?
(1) wait/notify/notifyAll是为了避免轮询(尝试执行)带来的性能损失,这句话是什么意思?看下面的讲解:
为了说清道理,我们用“图书馆借书”这个经典例子来作解释。
在简单的synchrnozed 同步机制下,李四如果想借,先要去图书馆查看书有没有还回来。
李四是个心急的人,他每天都去图书馆查;而张三看书看得慢,过了半个月才把书还回来,
结果李四在这半个月里全都白跑了,浪费了不少交通车费。
而如果使用wait/notify机制,李四就不用白忙了。
他第一次去图书馆时发现书已借走,就回家静静等待(wait);
张三把书还掉后,通知(notify)李四,李四去图书馆拿书即可。整个过程中,李四没有白跑,没浪费钱。
书 ---- 临界资源,需互斥地访问
张三,李四 ---- 两个竞争的线程
坐车去图书馆查书 ---- 轮询
车费 ---- CPU空间
等待 ---- wait
通知下一个借书者 ---- notify
也就是说,若使用简单的synchonized机制实现互斥,会导致线程主动发起轮询,若N次轮询没有成功,就产生了N次的CPU空间浪费;
如果加上了 wait/notify机制,就可以避免这些无谓的轮询,节省CPU的消耗。
(2) wait/notify/notifyAll可以控制线程执行与不执行。
第二、为什么wait/notify/notifyAll方法一定要写在synchronized里面呢?
因为第一点已经说了wait/notify/notifyAll的作用是为了避免轮询带来的性能损失,
而产生轮询的条件是多个线程对同一个资源进行操作。
第三、为什么wait/notify/notifyAll方法定义在Object类里面呢?
因为wait/notify/notifyAll必须写在synchronized里面,而synchronized的对象锁可以是任意对象,
所以wait/notify/notifyAll方法定义在Object类里面呢。
调用wait/notify/notifyAll方法的对象,必须和synchronized()的对象锁一致。