计算机基础-操作系统
1 什么是操作系统?请简要概述一下
- 操作系统是管理计算机硬件和软件资源的计算机程序,提供一个计算机用户与计算机硬件系统之间的接口。
- 向上对用户程序提供接口,向下接管硬件资源。
- 操作系统本质上也是一个软件,作为最接近硬件的系统软件,负责处理器管理、存储器管理、设备管理、文件管理和提供用户接口。
2 操作系统有哪些分类?
- 操作系统常规可分为批处理操作系统、分时操作系统、实时操作系统。
- 若一个操作系统兼顾批操作和分时的功能,则称该系统为通用操作系统。(通用操作系统 = 批处理操作系统 + 分时操作系统)
- 常见的通用操作系统有:Windows、Linux、MacOS等。
3 什么是内核态和用户态?
- 为了避免操作系统和关键数据被用户程序破坏,将处理器的执行状态分为内核态和用户态。
- 内核态是操作系统管理程序执行时所处的状态,能够执行包含特权指令在内的一切指令,能够访问系统内所有的存储空间。
- 用户态是用户程序执行时处理器所处的状态,不能执行特权指令,只能访问用户地址空间。
- 用户程序运行在用户态,操作系统内核运行在内核态。
4 如何实现内核态和用户态的切换?
- 1. 系统调用是操作系统的最小功能单位,是操作系统提供的用户接口,系统调用本身是一种软中断。
- 2. 异常,也叫做内中断,是由错误引起的,如文件损坏、缺页故障等。
- 3. 外部中断,是通过两根信号线来通知处理器外设的状态变化,是硬中断。
5 并发和并行的区别
- 1. 并发(concurrency):指宏观上看起来两个程序在同时运行,比如说在单核cpu上的多任务。但从微观上看两个程序的指令是交织着运行的,指令之间交错执行,在单个周期内只运行了一个指令。这种并发并不能提高计算机的性能,只能提高效率(如降低某个进程的相应时间)。
- 2. 并行(parallelism):指严格物理意义上的同时运行,比如多核cpu,两个程序分别运行在两个核上,两者之间互不影响,单个周期内每个程序都运行了自己的指令,也就是运行了两条指令。这样说来并行的确提高了计算机的效率。所以现在的cpu都是往多核方面发展。
6 什么是进程?
- 1. 进程控制块PCB,是进程存在的唯一标志,包含进程标识符PID,进程当前状态,程序和数据地址,进程优先级、CPU现场保护区(用于进程切换),占有的资源清单等。
- 2. 程序段
- 3. 数据段
7 进程的基本操作
- 1. 进程的创建:fork()。新创建的子进程几乎但不完全与父进程相同。子进程得到与父进程用户级虚拟地址空间相同的(但是独立的)一份副本,包括代码和数据段、堆、共享库以及用户栈。子进程还获得与父进程任何打开文件描述符相同的副本,这就意味着当父进程调用 fork 时,子进程可以读写父进程中打开的任何文件。父进程和新创建的子进程之间最大的区别在于它们有不同的 PID。fork函数是有趣的(也常常令人迷惑), 因为它只被调用一次,却会返回两次:一次是在调用进程(父进程)中,一次是在新创建的子进程中。在父进程中,fork 返回子进程的 PID。在子进程中,fork 返回 0。因为子进程的 PID 总是为非零,返回值就提供一个明确的方法来分辨程序是在父进程还是在子进程中执行。
- pid_t fork(void);
- 2. 回收子进程:当一个进程由于某种原因终止时,内核并不是立即把它从系统中清除。相反,进程被保持在一种已终止的状态中,直到被它的父进程回收(reaped)。当父进程回收已终止的子进程时,内核将子进程的退出状态传递给父进程,然后抛弃已终止的进程。一个进程可以通过调用 waitpid 函数来等待它的子进程终止或者停止。
- pid_t waitpid(pid_t pid, int *statusp, int options);
- 3. 加载并运行程序:execve 函数在当前进程的上下文中加载并运行一个新程序。
- int execve(const char *filename, const char *argv[], const char *envp[]);
- 4. 进程终止:
- void exit(int status);
8 简述进程间通信方法
- 每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程A把数据从用户空间拷到内核缓冲区,进程B再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信。
- 不同进程间的通信本质:进程之间可以看到一份公共资源;而提供这份资源的形式或者提供者不同,造成了通信方式不同。
- 进程间通信主要包括管道、系统IPC(包括消息队列、信号量、信号、共享内存等)、以及套接字socket。
9 进程如何通过管道进行通信
- 1. 其本质是一个伪文件(实为内核缓冲区)
- 2. 由两个文件描述符引用,一个表示读端,一个表示写端。
- 3. 规定数据从管道的写端流入管道,从读端流出。
管道的局限性:
- 1. 数据自己读不能自己写。
- 2. 数据一旦被读走,便不在管道中存在,不可反复读取。
- 3. 由于管道采用半双工通信方式。因此,数据只能在一个方向上流动。
- 4. 只能在有公共祖先的进程间使用管道。
10 进程如何通过共享内存通信
- 1. 共享内存是最快的一种IPC,因为进程是直接对内存进行操作来实现通信,避免了数据在用户空间和内核空间来回拷贝。
- 2. 因为多个进程可以同时操作,所以需要进行同步处理。
- 3. 信号量和共享内存通常结合在一起使用,信号量用来同步对共享内存的访问。
11 什么是信号
- 1. 发送信号:内核通过更新目的进程上下文中的某个状态,发送(递送)一个信号给目的进程。发送信号可以有如下两种原因:
- 内核检测到一个系统事件,比如除零错误或者子进程终止。
- —个进程调用了kill 函数, 显式地要求内核发送一个信号给目的进程。一个进程可以发送信号给它自己。
- 2. 接收信号:当目的进程被内核强迫以某种方式对信号的发送做出反应时,它就接收了信号。进程可以忽略这个信号,终止或者通过执行一个称为信号处理程序(signal handler)的用户层函数捕获这个信号。
12 如何编写正确且安全的信号处理函数
- 1. 处理程序要尽可能简单。 避免麻烦的最好方法是保持处理程序尽可能小和简单。例如,处理程序可能只是简单地设置全局标志并立即返回;所有与接收信号相关的处理都由主程序执行,它周期性地检查(并重置)这个标志。
- 2. 在处理程序中只调用异步信号安全的函数。 所谓异步信号安全的函数(或简称安全的函数)能够被信号处理程序安全地调用,原因有二:要么它是可重入的(例如只访问局部变量),要么它不能被信号处理程序中断。
- 3. 保存和恢复errno。 许多Linux 异步信号安全的函数都会在出错返回时设置errno在处理程序中调用这样的函数可能会干扰主程序中其他依赖于分。解决方法是在进人处理程序时把errno 保存在一个局部变量中,在处理程序返回前恢复它。注意,只有在处理程序要返回时才有此必要。如果处理程序调用_exit终止该进程,那么就不需要这样做了。
- 4. 阻塞所有的信号,保护对共享全局数据结构的访问。 如果处理程序和主程序或其他处理程序共享一个全局数据结构,那么在访问(读或者写)该数据结构时,你的处理程序和主程序应该暂时阻塞所有的信号。这条规则的原因是从主程序访问一个数据结构d 通常需要一系列的指令,如果指令序列被访问d 的处理程序中断,那么处理程序可能会发现d 的状态不一致,得到不可预知的结果。在访问d时暂时阻塞信号保证了处理程序不会中断该指令序列。
- 5. 用volatile 声明全局变量。 考虑一个处理程序和一个main 函数,它们共享一个全局变量g 。处理程序更新g,main 周期性地读g, 对于一个优化编译器而言,main 中g的值看上去从来没有变化过,因此使用缓存在寄存器中g 的副本来满足对g 的每次引用是很安全的。如果这样,main 函数可能永远都无法看到处理程序更新过的值。可以用volatile 类型限定符来定义一个变量,告诉编译器不要缓存这个变量。例如:volatile 限定符强迫编译器毎次在代码中引用g时,都要从内存中读取g的值。一般来说,和其他所有共享数据结构一样,应该暂时阻塞信号,保护每次对全局变量的访问。 volatile int g;
- 6. 用sig_atomic_t声明标志。在常见的处理程序设计中,处理程序会写全局标志来记录收到了信号。主程序周期性地读这个标志,响应信号,再清除该标志。对于通过这种方式来共享的标志,C 提供一种整型数据类型sig_atomic_t对它的读和写保证会是原子的(不可中断的)。
- 7. 信号的一个与直觉不符的方面是未处理的信号是不排队的。因为 pending 位向量中每种类型的信号只对应有一位,所以每种类型最多只能有一个未处理的信号。关键思想是如果存在一个未处理的信号就表明至少有一个信号到达了。
13 进程调度的时机
- 1. 当前运行的进程运行结束。
- 2. 当前运行的进程由于某种原因阻塞。
- 3. 执行完系统调用等系统程序后返回用户进程。
- 4. 在使用抢占调度的系统中,具有更高优先级的进程就绪时。
- 5. 分时系统中,分给当前进程的时间片用完。
14 不能进行进程调度的情况
- 1. 在中断处理程序执行时。
- 2. 在操作系统的内核程序临界区内。
- 3. 其它需要完全屏蔽中断的原子操作过程中。
15 进程的调度策略(算法)
- 1. 先到先服务调度算法:先到的进程先执行
- 2. 短作业优先调度算法:根据进程执行时间短的优先执行
- 3. 优先级调度算法:根据进程优先级高的先执行
- 4. 时间片轮转调度算法:给进程分配执行时间,用完则切换进程执行
- 5. 高响应比优先调度算法:是等待时间与要求服务时间的比值,为先到先服务与短作业优先的结合。
- 6. 多级队列调度算法:该算法将系统中的进程就绪队列从一个拆分为若干个,将不同类型或性质的进程固定分配在不同的就绪队列,不同的就绪队列采用不同的调度算法,一个就绪队列中的进程可以设置不同的优先级,不同的就绪队列本身也可以设置不同的优先级。
- 7. 多级反馈队列调度算法:也按时间片轮转算法执行任务,设置n个队列,当第一个队列任务为空,才执行第二个队列,依次类推。如果在i队列的任务在该时间片执行后没有完成,即插入i+1号队列。
16 进程调度策略的基本设计指标
- 1. CPU利用率。
- 2. 系统吞吐率:即单位时间内CPU完成的作业的数量。
- 3. 响应时间。
- 4. 周转时间:是指作业从提交到完成的时间间隔。从每个作业的角度看,完成每个作业的时间也是很关键:
- 平均周转时间
- 带权周转时间
- 平均带权周转时间
17 进程的状态与状态转换
- 1. 运行(running)态:进程占有处理器正在运行的状态。进程已获得CPU,其程序正在执行。在单处理机系统中,只有一个进程处于执行状态; 在多处理机系统中,则有多个进程处于执行状态。
- 2.就绪(ready)态:进程具备运行条件,等待系统分配处理器以便运行的状态。 当进程已分配到除CPU以外的所有必要资源后,只要再获得CPU,便可立即执行,进程这时的状态称为就绪状态。在一个系统中处于就绪状态的进程可能有多个,通常将它们排成一个队列,称为就绪队列。
- 3.阻塞(wait)态:又称等待态或睡眠态,指进程不具备运行条件,正在等待某个时间完成的状态。
- 1. 就绪→执行:处于就绪状态的进程,当进程调度程序为之分配了处理机后,该进程便由就绪状态转变成执行状态。
- 2. 执行→就绪:处于执行状态的进程在其执行过程中,因分配给它的一个时间片已用完而不得不让出处理机,于是进程从执行状态转变成就绪状态。
- 3. 执行→阻塞:正在执行的进程因等待某种事件发生而无法继续执行时,便从执行状态变成阻塞状态。
- 4. 阻塞→就绪:处于阻塞状态的进程,若其等待的事件已经发生,于是进程由阻塞状态转变为就绪状态。
18 什么是孤儿进程?僵尸进程?
- 1. 孤儿进程: 父进程退出,子进程还在运行的这些子进程都是孤儿进程,孤儿进程将被init进程(1号进程)所收养,并由init进程对他们完成状态收集工作。
- 2. 僵尸进程(僵死进程): 进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait 获waitpid 获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中的这些进程是僵尸进程。
19 什么是线程
- 1. 是进程划分的任务,是一个进程内可调度的实体,是CPU调度的基本单位,用于保证程序的实时性,实现进程内部的并发。
- 2. 线程是操作系统可识别的最小执行和调度单位。每个线程都独自占用一个虚拟处理器:独自的寄存器组,指令计数器和处理器状态。
- 3. 每个线程完成不同的任务,但是属于同一个进程的不同线程之间共享同一地址空间(也就是同样的动态内存,映射文件,目标代码等等),打开的文件队列和其他内核资源。
20 为什么需要线程
- 1. 进程在同一时刻只能做一个任务,很多时候不能充分利用CPU资源。
- 2. 进程在执行的过程中如果发生阻塞,整个进程就会挂起,即使进程中其它任务不依赖于等待的资源,进程仍会被阻塞。
- 1. 从资源上来讲,开辟一个线程所需要的资源要远小于一个进程。
- 2. 从切换效率上来讲,运行于一个进程中的多个线程,它们之间使用相同的地址空间,而且线程间彼此切换所需时间也远远小于进程间切换所需要的时间(这种时间的差异主要由于缓存的大量未命中导致)。
- 3. 从通信机制上来讲,线程间方便的通信机制。对不同进程来说,它们具有独立的地址空间,要进行数据的传递只能通过进程间通信的方式进行。线程则不然,属于同一个进程的不同线程之间共享同一地址空间,所以一个线程的数据可以被其它线程感知,线程间可以直接读写进程数据段(如全局变量)来进行通信(需要一些同步措施)。
21 简述线程和进程的区别和联系
- 1. 一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。线程依赖于进程而存在。
- 2. 进程在执行过程中拥有独立的地址空间,而多个线程共享进程的地址空间。(资源分配给进程,同一进程的所有线程共享该进程的所有资源。同一进程中的多个线程共享代码段(代码和常量),数据段(全局变量和静态变量),扩展段(堆存储)。但是每个线程拥有自己的栈段,栈段又叫运行时段,用来存放所有局部变量和临时变量。)
- 3. 进程是资源分配的最小单位,线程是CPU调度的最小单位。
- 4. 通信:由于同一进程中的多个线程具有相同的地址空间,使它们之间的同步和通信的实现,也变得比较容易。进程间通信 IPC ,线程间可以直接读写进程数据段(如全局变量)来进行通信(需要一些同步方法,以保证数据的一致性)。
- 5. 进程编程调试简单可靠性高,但是创建销毁开销大;线程正相反,开销小,切换速度快,但是编程调试相对复杂。
- 6. 进程间不会相互影响;一个进程内某个线程挂掉将导致整个进程挂掉。
- 7. 进程适应于多核、多机分布;线程适用于多核。
22 进程和线程的基本API
23 多线程模型
- 1. 多对一模型:将多个用户级线程映射到一个内核级线程上。该模型下,线程在用户空间进行管理,效率较高。缺点就是一个线程阻塞,整个进程内的所有线程都会阻塞。几乎没有系统继续使用这个模型。
- 2. 一对一模型:将内核线程与用户线程一一对应。优点是一个线程阻塞时,不会影响到其它线程的执行。该模型具有更好的并发性。缺点是内核线程数量一般有上限,会限制用户线程的数量。更多的内核线程数目也给线程切换带来额外的负担。linux和Windows操作系统家族都是使用一对一模型。
- 3. 多对多模型:将多个用户级线程映射到多个内核级线程上。结合了多对一模型和一对一模型的特点。
24 进程同步的方法
- 1. 互斥锁
- 2. 读写锁
- 3. 条件变量
- 4. 记录锁(record locking)
- 5. 信号量
- 6. 屏障(barrier)
25 线程同步的方法
- 1. 互斥锁:如果资源已经被占用,资源申请者只能进入睡眠状态。
- 2. 读写锁
- 3. 条件变量
- 4. 信号量
- 5. 自旋锁:当一个线程在获取锁的时候,如果锁已经被其它线程获取,那么该线程将循环等待,然后不断的判断锁是否能够被成功获取,直到获取到锁才会退出循环。
- 6. 屏障(barrier)
26 进程同步与线程同步有什么区别
27 死锁是怎样产生的?
- 1. 互斥条件:进程对所分配到的资源不允许其他进程访问,若其他进程访问该资源,只能等待,直至占有该资源的进程使用完成后释放该资源。
- 2. 占有并等待条件:进程获得一定的资源后,又对其他资源发出请求,但是该资源可能被其他进程占有,此时请求阻塞,但该进程不会释放自己已经占有的资源。
- 3. 非抢占条件:进程已获得的资源,在未完成使用之前,不可被剥夺,只能在使用后自己释放。
- 4. 循环等待条件:进程发生死锁后,必然存在一个进程-资源之间的环形链。
28 如何解决死锁问题
- 1. 资源一次性分配,这样就不会再有请求了(破坏请求条件)。
- 2. 只要有一个资源得不到分配,也不给这个进程分配其他的资源(破坏占有并等待条件)。
- 3. 可抢占资源:即当进程新的资源未得到满足时,释放已占有的资源,从而破坏不可抢占的条件。
- 4. 资源有序分配法:系统给每类资源赋予一个序号,每个进程按编号递增的请求资源,释放则相反,从而破坏环路等待的条件。
29 什么是虚拟地址,什么是物理地址
- 在一个带虚拟内存的系统中,CPU 从一个有N=pow(2,n)个地址的地址空间中生成虚拟地址,这个地址空间称为虚拟地址空间(virtual address space),现代系统通常支持 32 位或者 64 位虚拟地址空间。
- 一个系统还有一个物理地址空间(physical address space),对应于系统中物理内存的M 个字节。
- 地址空间的概念是很重要的,因为它清楚地区分了数据对象(字节)和它们的属性(地址)。 一旦认识到了这种区别,那么我们就可以将其推广,允许每个数据对象有多个独立的地址,其中每个地址都选自一个不同的地址空间。这就是虚拟内存的基本思想。
- 主存中的每字节都有一个选自虚拟地址空间的虚拟地址和一个选自物理地址空间的物理地址。
30 什么是虚拟内存
- 1. 它将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传送数据,通过这种方式,它高效地使用了主存。
- 2. 它为每个进程提供了一致的地址空间,从而简化了内存管理。
- 3. 它保护了每个进程的地址空间不被其他进程破坏。
31 为什么要引入虚拟内存
- 不同进程的相同虚拟内存地址映射不同的物理内存地址,实现内存隔离。
- 不同进程的不同虚拟内存地址映射相同的物理内存地址,实现内存共享。
32 请说一下什么是写时复制
- 如果有多个进程要读取它们自己的那部门资源的副本,那么复制是不必要的。每个进程只要保存一个指向这个资源的指针就可以了。只要没有进程要去修改自己的“副本”,就存在着这样的幻觉:每个进程好像独占那个资源。从而就避免了复制带来的负担。如果一个进程要修改自己的那份资源“副 本”,那么就会复制那份资源,并把复制的那份提供给进程。不过其中的复制对进程来说是透明的。 这个进程就可以修改复制后的资源了,同时其他的进程仍然共享那份没有修改过的资源。所以这就是名称的由来:在写入时进行复制。
- 写时复制的主要好处在于:如果进程从来就不需要修改资源,则不需要进行复制。惰性算法的好处就在于它们尽量推迟代价高昂的操作,直到必要的时刻才会去执行。
- 在使用虚拟内存的情况下,写时复制(Copy-On-Write)是以页为基础进行的。所以,只要进程不修改它全部的地址空间,那么就不必复制整个地址空间。在fork()调用结束后,父进程和子进程都相信它们有一个自己的地址空间,但实际上它们共享父进程的原始页,接下来这些页又可以被其他的父进程或子进程共享。
33 实时操作系统的概念
34 优先级反转是什么?如何解决
- 由于多进程共享资源,具有最高优先权的进程被低优先级进程阻塞,反而使具有中优先级的进程先于高优先级的进程执行,导致系统的崩溃。这就是所谓的优先级反转(Priority Inversion)。
- 其实,优先级反转是在高优级(假设为A)的任务要访问一个被低优先级任务(假设为C)占有的资源时,被阻塞。而此时又有优先级高于占有资源的任务(C)而低于被阻塞的任务(A)的优先级的任务(假设为B)时,于是,占有资源的任务就被挂起(占有的资源仍为它占有),因为占有资源的任务优先级很低,所以,它可能一直被另外的任务挂起。而它占有的资源也就一直不能释放,这样,引起任务A一直没办法执行。而比它优先低的任务却可以执行。
- 1. 优先级继承(priority inheritance) 优先级继承是指将低优先级任务的优先级提升到等待它所占有的资源的最高优先级任务的优先级。当高优先级任务由于等待资源而被阻塞时,此时资源的拥有者的优先级将会自动被提升。
- 2. 优先级天花板(priority ceilings)优先级天花板是指将申请某资源的任务的优先级提升到可能访问该资源的所有任务中最高优先级任务的优先级。(这个优先级称为该资源的优先级天花板)。
35 简述 select
36 简述poll
37 简述epoll
38 简述虚拟地址到物理地址转化过程
39 简述页表
40 简述多级页表
41 简述快表
42 简述MMU
43 Unix和Linux有什么区别
- 1. 开源性:Linux是一款开源操作系统,不需要付费,即可使用;Unix是一款对源码实行知识产权保护的传统商业软件,使用需要付费授权使用。
- 2. 跨平台性:Linux操作系统具有良好的跨平台性能,可运行在多种硬件平台上;Unix操作系 统跨平台性能较弱,大多需与硬件配套使用。
- 3. 可视化界面:Linux除了进行命令行操作,还有窗体管理系统;Unix只是命令行下的系统。
- 4. 硬件环境:Linux操作系统对硬件的要求较低,安装方法更易掌握;Unix对硬件要求比较苛 刻,按照难度较大。
- 5. 用户群体:Linux的用户群体很广泛,个人和企业均可使用;Unix的用户群体比较窄,多是 安全性要求高的大型企业使用,如银行、电信部门等,或者Unix硬件厂商使用,如Sun等。
44 什么是 Linux 内核
- 系统内存管理
- 应用程序管理
- 硬件设备管理
- 文件系统管理
45 Linux的基本组件是什么
46 什么是交换空间
47 什么是CLI?什么是GUI?
- 命令行界面(英语:command-line interface,缩写]:CLI)是在图形用户界面得到普及之前使用为广泛的用户界面,它通常不支持鼠标,用户通过键盘输入指令,计算机接收到指令后,予以执行。也有人称之为字符用户界面(CUI)。较图形用户界面节约计算机系统的资源。
- 图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。允许用户使用鼠标等输入设备操纵屏幕上的图标或菜单选项,以选择命令、调用文件、启动程序或执行其它一些日常任务。与通过键盘输入文本或字符命令来完成例行任务的字符界面相比,图形用户界面有许多优点。
48 什么是 inode
- 文件数据都储存在"块"中,文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等存储在inode中。
- 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。操作系统读取硬盘的时候是一次性连续读取多个扇区,即一次性读取一个"块"(block)。“块”是文件存取的 小单位。"块"的大小, 常见的是4KB,即连续八个 sector组成一个 block。
49 什么是硬链接和软链接
- 1 . 不可以在不同文件系统的文件间建立链接;
- 2 . 只有超级用户才可以为目录创建硬链接。
- 1 . 因为链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录中,再访问链接文件,系统就找不到了。
- 2 . 它要系统分配额外的空间用于建立新的索引节点和保存原文件的路径。
- 硬链接不可以跨分区,软件链可以跨分区。
- 硬链接指向一个 inode 节点,而软链接则是创建一个新的 inode 节点。
- 删除硬链接文件,不会删除原文件,删除软链接文件,会把原文件删除。
50 RAID 是什么
51 什么叫 CC 攻击?什么叫 DDOS 攻击?
- CC 攻击:主要是用来攻击页面的,模拟多个用户不停的对你的页面进行访问,从而使你的系统资源消耗殆尽。
- DDOS 攻击:中文名叫分布式拒绝服务攻击,指借助服务器技术将多个计算机联合起来作为攻击平台,来对一个或多个目标发动 DDOS 攻击。
52 什么是网站数据库注入
- 由于程序员的水平及经验参差不齐,大部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断。应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的 SQL 注入。
- SQL注入:是从正常的 WWW 端口访问,而且表面看起来跟一般的 Web 页面访问没什么区别,如果管理员没查看日志的习惯,可能被入侵很长时间都不会发觉。
53 如何规划一台 Linux 主机,步骤是怎样
- 1、确定机器是做什么用的,比如是做 WEB 、DB、还是游戏服务器。不同的用途,机器的配置会有所不同。
- 2、确定好之后,就要定系统需要怎么安装,默认安装哪些系统、分区怎么做。
- 3、需要优化系统的哪些参数,需要创建哪些用户等等的。
54 有哪些方面的因素会导致网站网站访问慢
- 1、服务器出口带宽不够用
- 本身服务器购买的出口带宽比较小。一旦并发量大的话,就会造成分给每个用户的出口带宽就小,访问速度自然就会慢。
- 跨运营商网络导致带宽缩减。例如,公司网站放在电信的网络上,那么客户这边对接是长城宽带或联通,这也可能导致带宽的缩减。
- 2、服务器负载过大,导致响应不过来
- 分析系统负载,使用 w 命令或者 uptime 命令查看系统负载。如果负载很高,则使用 top 命令查看 CPU ,MEM 等占用情况,要么是 CPU 繁忙,要么是内存不够。
- 如果这二者都正常,再去使用 sar 命令分析网卡流量,分析是不是遭到了攻击。一旦分析出问题的原因,采取对应的措施解决,如决定要不要杀死一些进程,或者禁止一些访问等。
- 3、数据库瓶颈
- 如果慢查询比较多。那么就要开发人员或 DBA 协助进行 SQL 语句的优化。
- 如果数据库响应慢,考虑可以加一个数据库缓存,如 Redis 等。然后,也可以搭建 MySQL 主从,一台 MySQL 服务器负责写,其他几台从数据库负责读。
- 4、网站开发代码没有优化好
- 例如 SQL 语句没有优化,导致数据库读写相当耗时。
55 针对网站访问慢,怎么去排查
- 1、首先要确定是用户端还是服务端的问题。当接到用户反馈访问慢,那边自己立即访问网站看看,如果自己这边访问快,基本断定是用户端问题,就需要耐心跟客户解释,协助客户解决问题。不要上来就看服务端的问题。一定要从源头开始,逐步逐步往下。
- 2、如果访问也慢,那么可以利用浏览器的调试功能,看看加载那一项数据消耗时间过多,是图片加载慢,还是某些数据加载慢。
- 3、针对服务器负载情况。查看服务器硬件(网络、CPU、内存)的消耗情况。如果是购买的云主机,比如阿里云,可以登录阿里云平台提供各方面的监控,比如 CPU、内存、带宽的使用情况。
- 4、如果发现硬件资源消耗都不高,那么就需要通过查日志,比如看看 MySQL慢查询的日志,看看是不是某条 SQL 语句查询慢,导致网站访问慢。怎么去解决?
56 Linux 性能调优都有哪几种方法
- 1、Disabling daemons (关闭 daemons)。
- 2、Shutting down the GUI (关闭 GUI)。
- 3、Changing kernel parameters (改变内核参数)。
- 4、Kernel parameters (内核参数)。
- 5、Tuning the processor subsystem (处理器子系统调优)。
- 6、Tuning the memory subsystem (内存子系统调优)。
- 7、Tuning the file system (文件系统子系统调优)。
- 8、Tuning the network subsystem(网络子系统调优)。
57 Linux 常见操作命令
cat 命令
- 1.一次显示整个文件: cat filename
- 2.从键盘创建一个文件:cat > filename
- 3.将几个文件合并为一个文件: cat file1 file2 > file
chmod 命令
- Linux/Unix 的文件调用权限分为三级 : 文件拥有者、群组、其他。每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。
- 利用 chmod 可以控制文件如何被他人所调用。
- 该命令有两种用法:
- 1 . 一种是包含字母和操作符表达式的文字设定法;
- 2 . 另一种是包含数字的数字设定法。
cp 命令
- 将源文件复制至目标文件,或将多个源文件复制至目标目录。
- 命令行复制,如果目标文件已经存在会提示是否覆盖,而在 shell 脚本中,如果不加 -i 参数,则不会提示,而是直接覆盖!
find 命令
head 命令
more 命令
功能类似于 cat, more 会以一页一页的显示方便使用者逐页阅读,而基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示。
less 命令
ln 命令
locate 命令
mv 命令
rm 命令
tail 命令
touch 命令
vim 命令
whereis 命令
which 命令
wc 命令
cd 命令
df 命令
du 命令
ls命令
mkdir 命令
pwd 命令
rmdir 命令
ifconfig 命令
netstat 命令
ping 命令
telnet 命令
date 命令
free 命令
kill 命令
ps 命令
yum 命令
tar 命令
vmstal 命令
计算机基础-操作系统相关推荐
- 计算机基础——操作系统
作者简介:一名云计算网络运维人员.每天分享网络与运维的技术与干货. 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页 目录 前言 一.操作系统 1.操作系统简介 2.操作系统的主要功 ...
- 计算机基础——操作系统篇概览
操作系统 1.os基础 操作系统基本概念:运行在计算机上的一种程序,管理计算机上的软件和硬件资源,包括进程,内存管理,硬件设备管理等(内核负责). 系统调用:运行在用户态的程序需要调用系统态下的资源, ...
- 计算机基础------操作系统
一.什么是操作系统 1)管理计算机软件和硬件资源的程序,是计算机的基石 2)本质是运行在计算机上的应用程序,运行在你电脑上的所有应用程序都通过操作系统来调用系统内存以及磁盘等等硬件. 3)操作系统屏蔽 ...
- 计算机基础--操作系统基础
学习目标: 操作系统基础 学习背景: 针对面试,对自己以往学习过的操作系统基础知识做一个记录与梳理. 学习内容: 1. 进程与线程的本质区别.以及各自的使用场景. 2. 五种进程状态之间的转换. 3. ...
- 快速过一遍计算机基础--操作系统—4.文件管理
目录 Part 1:文件的逻辑结构 Part 2:文件目录 一.实现文件目录的关键数据结构----文件控制块FCB 二.目录结构 三.对文件控制块FCB的优化-索引结点 Part 3:文件的物理结构( ...
- 计算机基础教案(XP操作系统)
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 计算机基础教案 ...
- IT:银行类金融科技岗笔试习题集合—各大行(工商+建设+农业+浦发+招商+平安+人民+邮政银行)计算机信息科技岗笔试集合(包括计算机基础知识+网络+操作系统+数据库系统原理)
IT:银行类金融科技岗笔试习题集合-各大行(工商+建设+农业+浦发+招商+平安+人民+邮政银行)计算机信息科技岗笔试集合(包括计算机基础知识+网络+操作系统+数据库系统原理) 导读:因为博主后台留言太 ...
- 计算机基础知识-操作系统
1.2 操作系统 用来操作硬件,了解每一个硬件的作用并熟知其物理特性及使用方法(这是一个极其繁琐.庞大的工作). 桌面很占用系统资源 为什么要有操作系统 一般而言,现代计算机系统是一个复杂的系统.如果 ...
- 计算机与操作系统基础小结
计算机基础概念 1946年二月美国,世界上第一台电子计算机ENIAC诞生,似乎从这一年开始世界便逐渐变得不一样了.随着半个世纪的时间,计算机技术蓬勃发展,推动人类进入信息社会. 计算机操作界面: ①图 ...
- 计算机基础和操作系统基础知识测试,计算机基础知识和操作系统.doc
全国计算机等级考试精讲·精解·精练--二级C 第1章 计算机基础知识与操作系统 · PAGE 2· · PAGE 33· 技术资料 共享知识 第1章计算机基础知识与操作系统 大纲要求 了解计算机的有关 ...
最新文章
- 易宝典——玩转O365中的EXO服务 之三十六 为软删除邮箱启用就地保留
- WPF中的Attached Property
- 转 性能分析工具汇总
- 80核处理器_标压版锐龙处理器更香!联想小新Pro 13轻薄笔记本评测
- 如何获取UIWebView中全屏播放视频事件
- fastjson 序列化时指定json的key值
- Cocoa中Core Data的简单介绍
- linux 链接第三方库
- catia导出bom清单_CATIA VBA 二次开发工具 | 一键导出Bom信息到Excel
- 【QUARTUSII】数字电路设计仿真实验
- 各大主流社交软件显示ip地址-如何实现ip飘移
- 几种经典的下肢力量练习方式
- JAVA+MySQL 图书馆借阅信息管理系统
- 如何在windows上安装虚拟机
- MySQL数据库的数据更新
- STM32笔记---USART3配置及收发数据
- JLINK与 SWD接口
- 超酷!!!成功使用doxygen+Graphviz+HtmlHelp 自动生成函数调用关系图
- 【实时数仓】省份交易额统计接口、新老访客对比接口、访客分时统计接口
- 深入解析HotSpot