linux 策略,linux设置代理

大家好,今天小编来为大家解答以下的问题,关于linux 策略,linux设置代理这个很多人还不知道,现在让我们一起来看看吧!

linux进程调度的三种策略是什么

linux内核的三种主要调度策略:

1,SCHED_OTHER分时调度策略,

2,SCHED_FIFO实时调度策略,先到先服务

3,SCHED_RR实时调度策略,时间片轮转

实时进程将得到优先调用,实时进程根据实时优先级决定调度权值。分时进程则通过nice和counter值决定权值,nice越小,counter越大,被调度的概率越大,也就是曾经使用了cpu最少的进程将会得到优先调度。

SHCED_RR和SCHED_FIFO的不同:

当采用SHCED_RR策略的进程的时间片用完,系统将重新分配时间片,并置于就绪队列尾。放在队列尾保证了所有具有相同优先级的RR任务的调度公平。

SCHED_FIFO一旦占用cpu则一直运行。一直运行直到有更高优先级任务到达或自己放弃。

如果有相同优先级的实时进程(根据优先级计算的调度权值是一样的)已经准备好,FIFO时必须等待该进程主动放弃后才可以运行这个优先级相同的任务。而RR可以让每个任务都执行一段时间。

相同点:

RR和FIFO都只用于实时任务。

创建时优先级大于0(1-99)。

按照可抢占优先级调度算法进行。

就绪态的实时任务立即抢占非实时任务。

所有任务都采用linux分时调度策略时:

1,创建任务指定采用分时调度策略,并指定优先级nice值(-20~19)。

2,将根据每个任务的nice值确定在cpu上的执行时间(counter)。

3,如果没有等待资源,则将该任务加入到就绪队列中。

4,调度程序遍历就绪队列中的任务,通过对每个任务动态优先级的计算权值(counter+20-nice)结果,选择计算结果最大的一个去运行,当这个时间片用完后(counter减至0)或者主动放弃cpu时,该任务将被放在就绪队列末尾(时间片用完)或等待队列(因等待资源而放弃cpu)中。

5,此时调度程序重复上面计算过程,转到第4步。

6,当调度程序发现所有就绪任务计算所得的权值都为不大于0时,重复第2步。

所有任务都采用FIFO时:

1,创建进程时指定采用FIFO,并设置实时优先级rt_priority(1-99)。

2,如果没有等待资源,则将该任务加入到就绪队列中。

3,调度程序遍历就绪队列,根据实时优先级计算调度权值(1000+rt_priority),选择权值最高的任务使用cpu,该FIFO任务将一直占有cpu直到有优先级更高的任务就绪(即使优先级相同也不行)或者主动放弃(等待资源)。

4,调度程序发现有优先级更高的任务到达(高优先级任务可能被中断或定时器任务唤醒,再或被当前运行的任务唤醒,等等),则调度程序立即在当前任务堆栈中保存当前cpu寄存器的所有数据,重新从高优先级任务的堆栈中加载寄存器数据到cpu,此时高优先级的任务开始运行。重复第3步。

5,如果当前任务因等待资源而主动放弃cpu使用权,则该任务将从就绪队列中删除,加入等待队列,此时重复第3步。

所有任务都采用RR调度策略时:

1,创建任务时指定调度参数为RR,并设置任务的实时优先级和nice值(nice值将会转换为该任务的时间片的长度)。

2,如果没有等待资源,则将该任务加入到就绪队列中。

3,调度程序遍历就绪队列,根据实时优先级计算调度权值(1000+rt_priority),选择权值最高的任务使用cpu。

4,如果就绪队列中的RR任务时间片为0,则会根据nice值设置该任务的时间片,同时将该任务放入就绪队列的末尾。重复步骤3。

5,当前任务由于等待资源而主动退出cpu,则其加入等待队列中。重复步骤3。

系统中既有分时调度,又有时间片轮转调度和先进先出调度:

1,RR调度和FIFO调度的进程属于实时进程,以分时调度的进程是非实时进程。

2,当实时进程准备就绪后,如果当前cpu正在运行非实时进程,则实时进程立即抢占非实时进程。

3,RR进程和FIFO进程都采用实时优先级做为调度的权值标准,RR是FIFO的一个延伸。FIFO时,如果两个进程的优先级一样,则这两个优先级一样的进程具体执行哪一个是由其在队列中的未知决定的,这样导致一些不公正性(优先级是一样的,为什么要让你一直运行?),如果将两个优先级一样的任务的调度策略都设为RR,则保证了这两个任务可以循环执行,保证了公平。

Ingo Molnar-实时补丁

为了能并入主流内核,Ingo Molnar的实时补丁也采用了非常灵活的策略,它支持四种抢占模式:

1.No Forced Preemption(Server),这种模式等同于没有使能抢占选项的标准内核,主要适用于科学计算等服务器环境。

2.Voluntary Kernel Preemption(Desktop),这种模式使能了自愿抢占,但仍然失效抢占内核选项,它通过增加抢占点缩减了抢占延迟,因此适用于一些需要较好的响应性的环境,如桌面环境,当然这种好的响应性是以牺牲一些吞吐率为代价的。

3.Preemptible Kernel(Low-Latency Desktop),这种模式既包含了自愿抢占,又使能了可抢占内核选项,因此有很好的响应延迟,实际上在一定程度上已经达到了软实时性。它主要适用于桌面和一些嵌入式系统,但是吞吐率比模式2更低。

4.Complete Preemption(Real-Time),这种模式使能了所有实时功能,因此完全能够满足软实时需求,它适用于延迟要求为100微秒或稍低的实时系统。

实现实时是以牺牲系统的吞吐率为代价的,因此实时性越好,系统吞吐率就越低。

如何在 Linux 上设置密码策略

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。在 Linux上设置密码策略,分三个部分,具体是:

1、准备。安装一个PAM模块来启用cracklib支持,这可以提供额外的密码检查功能。在Debin,Ubuntu或者Linux Mint使用命令:

sudo apt-get install libpam-cracklib这个模块在CentOS,Fedora或者RHEL默认安装了。所以在这些系统上就没有必要安装了。如要强制执行密码策略,我们需要修改/etc/pam.d这个与身份验证相关的文件。这个文件会在修改后立即生效。

2、设置最小密码长度。寻找同时包含“password”和“pam_cracklib.so”的一行,并在后面加上“minlen=10”。这将强行设置密码的最小密码长度为10位,其中<# of types>多少个不同类型的字符在密码中使用。有四种符号类型(大写、小写、数字和符号)。所以如果使用所有四种类型的组合,并指定最小长度为10,所允许的简单密码部分将是6位。

在Debin,Ubuntu或者Linux Mint使用命令:

sudo vi/etc/pam.d/common-password

修改内容:

password requisite pam_cracklib.so retry=3 minlen=10 difok=3

在Fedora,CentOS或RHEL使用命令:

sudo vi/etc/pam.d/system-auth

3、设置密码复杂度。寻找同时包含“password”和“pam_cracklib.so”的一行,并在后面加上“ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1”。这将迫使你在密码中至少包括一个大写字母、两个小写字母、一个数字和一个符号。

在Debin,Ubuntu或者Linux Mint使用命令:

sudo vi/etc/pam.d/common-password

修改内容:password requisite pam_cracklib.so retry=3 minlen=10 difok=3 ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1

如何查看,关闭和开启selinux

在Linux系统中,SELinux(Security-Enhanced Linux)是一种安全增强技术,它提供了一种强制访问控制机制。了解如何查看、关闭和开启SELinux对于系统管理员至关重要。

/usr/bin/setenforce是一个用于修改SELinux实时运行模式的工具。使用 setenforce 1可将SELinux设置为enforcing模式,而 setenforce 0则将其设置为permissive模式。若要彻底禁用SELinux,需在/etc/sysconfig/selinux中设置参数 selinux=0,或在/etc/grub.conf中添加此参数。

/usr/bin/setstatus-v可用于查看系统的状态。其运行输出如下:SELinux状态:已启用;SELinuxfs挂载点:/selinux;当前模式:强制;策略版本:18。

对于不重启即关闭SELinux的方法,可执行命令 setenforce 0。在新版本的Red Hat和 Fedora中,可以通过修改/etc/sysconfig/selinux文件来调整SELinux状态。文件内容如下:

#该文件控制系统的SELinux状态。

SELINUX=可以取这三个值之一:

enforcing- SELinux安全策略被强制执行。

permissive- SELinux会打印警告而非强制执行。

disabled- SELinux被完全禁用。

SELINUX=enforcing

SELINUXTYPE=使用哪种策略。可能的值是:

targeted-仅针对网络守护进程。

strict-完全SELinux保护。

SELINUXTYPE=targeted

将 SELINUX设定为 disable,系统下次启动时将停止SELinux。

Linux核心参数(Kernel Parameter)中,可以在核心参数后加上:selinux=0(停止)或 selinux=1(开启)参数。例如,在/boot/grub/menu.lst文件中:

title Fedora Core(2.6.18-1.2798.fc6)

root(hd0,0)

kernel/vmlinuz-2.6.18-1.2798.fc6 ro root=LABEL=/ rhgb quiet selinux=0

initrd/initrd-2.6.18-1.2798.fc6.img

检查SELinux当前状态,使用命令# getenforce。若输出为 disabled,则表示当前未启用SELinux。

阅读剩余
THE END