精华内容
下载资源
问答
  • 一、linux系统启动过程可分为5个阶段 ** 1.内核的引导 :计算机开电源后-BIOS开机自检(通常是硬盘来启动),操作系统接管硬件后,首先读入/boot目录下的内核文件 2.运行init :init进程是所有进程的起点,没有这个...

    **

    一、linux系统启动过程可分为5个阶段

    **

    1.内核的引导
    :计算机开电源后-BIOS开机自检(通常是硬盘来启动),操作系统接管硬件后,首先读入/boot目录下的内核文件

    2.运行init
    :init进程是所有进程的起点,没有这个进程的话,系统中任何进程都不会启动。init程序首先是需要读取配置文件,etc/inittab

    3.运行级别:
    :许多程序需要开机启动,它们在windows叫做“服务”(service),在linux就叫做“守护进程”(daemon)
    init进程的一大任务,就是去运行这些开机启动的程序。
    但是,不同的场合需要启动不同的程序,比如用作服务器时,需要启动Apache,用作桌面就不需要。
    linux允许为不同的场合,分配不同的开机启动程序,这就叫做“运行级别”(run level),需要根据“运行级别”,确定要运行哪些程序。
    linux有7个运行级别(运行级别切换 init3):
    运行级别0:系统停机状态,系统默认运行级别不能设为0.否则不能正常启动。
    运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登录
    运行级别2:多用户状态(没有NFS)–网络文件系统
    运行级别3:完全的多用户状态(有NFS),登录后进入控制台命令模式。
    运行级别4:系统未使用,保留
    运行级别5:X11控制台,登录后进入图形GUI模式
    运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动。

    4.系统初始化
    在init的配置文件中有这么一行:sisi::sysint:/etc/rc.sysinit,而rc.sysinit是一个bash shell的脚本,它主要是完成一些系统初始化的工作,rc.sysinit是每一个运行级别都要首先运行的重要脚本。
    完成的工作有:激活交换分区,检查磁盘,加载硬件模块以及其他一些需要优先执行的任务

    5.建立终端:
    RC执行完毕后,返回init,这时基本系统环境已经配置好了,各种守护进程也已经启动了。init接下来会打开6个终端,以便用户登录系统
    在这里插入图片描述

    6.用户登录系统
    1.命令行登录
    2.ssh登录
    3.图形界面登录
    当前可总结为:
    在这里插入图片描述

    展开全文
  • 注:(5)中读取一个扇区的数据(512B)到内存0x7c00中、0磁道0扇区就是操作系统的引导扇区 boot_sect -> set up -> system bootsect.s的工作 下图是引导扇区的代码,其 先将0x070c:0x0000处的代码,移动到0x...

    开机过程中干了什么?

    在这里插入图片描述
    注:(5)中读取一个扇区的数据(512B)到内存0x7c00中、0磁道0扇区就是操作系统的引导扇区


    boot_sect -> set up -> system

    bootsect.s的工作

    先看看代码:可能看不懂,可以直接根据下面解释来看重点!

    !
    ! SYS_SIZE is the number of clicks (16 bytes) to be loaded.
    ! 0x3000 is 0x30000 bytes = 196kB, more than enough for current
    ! versions of linux
    !
    SYSSIZE = 0x3000
    !
    !	bootsect.s		(C) 1991 Linus Torvalds
    !
    ! bootsect.s is loaded at 0x7c00 by the bios-startup routines, and moves
    ! iself out of the way to address 0x90000, and jumps there.
    !
    ! It then loads 'setup' directly after itself (0x90200), and the system
    ! at 0x10000, using BIOS interrupts. 
    !
    ! NOTE! currently system is at most 8*65536 bytes long. This should be no
    ! problem, even in the future. I want to keep it simple. This 512 kB
    ! kernel size should be enough, especially as this doesn't contain the
    ! buffer cache as in minix
    !
    ! The loader has been made as simple as possible, and continuos
    ! read errors will result in a unbreakable loop. Reboot by hand. It
    ! loads pretty fast by getting whole sectors at a time whenever possible.
    
    .globl begtext, begdata, begbss, endtext, enddata, endbss
    .text
    begtext:
    .data
    begdata:
    .bss
    begbss:
    .text
    
    SETUPLEN = 4				! nr of setup-sectors
    BOOTSEG  = 0x07c0			! original address of boot-sector
    INITSEG  = 0x9000			! we move boot here - out of the way
    SETUPSEG = 0x9020			! setup starts here
    SYSSEG   = 0x1000			! system loaded at 0x10000 (65536).
    ENDSEG   = SYSSEG + SYSSIZE		! where to stop loading
    
    ! ROOT_DEV:	0x000 - same type of floppy as boot.
    !		0x301 - first partition on first drive etc
    ROOT_DEV = 0x306
    
    entry _start
    _start:
    	mov	ax,#BOOTSEG
    	mov	ds,ax
    	mov	ax,#INITSEG
    	mov	es,ax
    	mov	cx,#256
    	sub	si,si
    	sub	di,di
    	rep
    	movw
    	jmpi	go,INITSEG
    go:	mov	ax,cs
    	mov	ds,ax
    	mov	es,ax
    ! put stack at 0x9ff00.
    	mov	ss,ax
    	mov	sp,#0xFF00		! arbitrary value >>512
    
    ! load the setup-sectors directly after the bootblock.
    ! Note that 'es' is already set up.
    
    load_setup:
    	mov	dx,#0x0000		! drive 0, head 0
    	mov	cx,#0x0002		! sector 2, track 0
    	mov	bx,#0x0200		! address = 512, in INITSEG
    	mov	ax,#0x0200+SETUPLEN	! service 2, nr of sectors
    	int	0x13			! read it
    	jnc	ok_load_setup		! ok - continue
    	mov	dx,#0x0000
    	mov	ax,#0x0000		! reset the diskette
    	int	0x13
    	j	load_setup
    
    ok_load_setup:
    
    ! Get disk drive parameters, specifically nr of sectors/track
    
    	mov	dl,#0x00
    	mov	ax,#0x0800		! AH=8 is get drive parameters
    	int	0x13
    	mov	ch,#0x00
    	seg cs
    	mov	sectors,cx
    	mov	ax,#INITSEG
    	mov	es,ax
    
    ! Print some inane message
    
    	mov	ah,#0x03		! read cursor pos
    	xor	bh,bh
    	int	0x10
    	
    	mov	cx,#21
    	mov	bx,#0x0007		! page 0, attribute 7 (normal)
    	mov	bp,#msg1
    	mov	ax,#0x1301		! write string, move cursor
    	int	0x10
    
    ! ok, we've written the message, now
    inf_loop:
    	jmp inf_loop
    
    ! we want to load the system (at 0x10000)
    
    	mov	ax,#SYSSEG
    	mov	es,ax		! segment of 0x010000
    	call	read_it
    	call	kill_motor
    
    ! After that we check which root-device to use. If the device is
    ! defined (!= 0), nothing is done and the given device is used.
    ! Otherwise, either /dev/PS0 (2,28) or /dev/at0 (2,8), depending
    ! on the number of sectors that the BIOS reports currently.
    
    	seg cs
    	mov	ax,root_dev
    	cmp	ax,#0
    	jne	root_defined
    	seg cs
    	mov	bx,sectors
    	mov	ax,#0x0208		! /dev/ps0 - 1.2Mb
    	cmp	bx,#15
    	je	root_defined
    	mov	ax,#0x021c		! /dev/PS0 - 1.44Mb
    	cmp	bx,#18
    	je	root_defined
    undef_root:
    	jmp undef_root
    root_defined:
    	seg cs
    	mov	root_dev,ax
    
    ! after that (everyting loaded), we jump to
    ! the setup-routine loaded directly after
    ! the bootblock:
    
    	jmpi	0,SETUPSEG
    
    ! This routine loads the system at address 0x10000, making sure
    ! no 64kB boundaries are crossed. We try to load it as fast as
    ! possible, loading whole tracks whenever we can.
    !
    ! in:	es - starting address segment (normally 0x1000)
    !
    sread:	.word 1+SETUPLEN	! sectors read of current track
    head:	.word 0			! current head
    track:	.word 0			! current track
    
    read_it:
    	mov ax,es
    	test ax,#0x0fff
    die:	jne die			! es must be at 64kB boundary
    	xor bx,bx		! bx is starting address within segment
    rp_read:
    	mov ax,es
    	cmp ax,#ENDSEG		! have we loaded all yet?
    	jb ok1_read
    	ret
    ok1_read:
    	seg cs
    	mov ax,sectors
    	sub ax,sread
    	mov cx,ax
    	shl cx,#9
    	add cx,bx
    	jnc ok2_read
    	je ok2_read
    	xor ax,ax
    	sub ax,bx
    	shr ax,#9
    ok2_read:
    	call read_track
    	mov cx,ax
    	add ax,sread
    	seg cs
    	cmp ax,sectors
    	jne ok3_read
    	mov ax,#1
    	sub ax,head
    	jne ok4_read
    	inc track
    ok4_read:
    	mov head,ax
    	xor ax,ax
    ok3_read:
    	mov sread,ax
    	shl cx,#9
    	add bx,cx
    	jnc rp_read
    	mov ax,es
    	add ax,#0x1000
    	mov es,ax
    	xor bx,bx
    	jmp rp_read
    
    read_track:
    	push ax
    	push bx
    	push cx
    	push dx
    	mov dx,track
    	mov cx,sread
    	inc cx
    	mov ch,dl
    	mov dx,head
    	mov dh,dl
    	mov dl,#0
    	and dx,#0x0100
    	mov ah,#2
    	int 0x13
    	jc bad_rt
    	pop dx
    	pop cx
    	pop bx
    	pop ax
    	ret
    bad_rt:	mov ax,#0
    	mov dx,#0
    	int 0x13
    	pop dx
    	pop cx
    	pop bx
    	pop ax
    	jmp read_track
    
    !/*
    ! * This procedure turns off the floppy drive motor, so
    ! * that we enter the kernel in a known state, and
    ! * don't have to worry about it later.
    ! */
    kill_motor:
    	push dx
    	mov dx,#0x3f2
    	mov al,#0
    	outb
    	pop dx
    	ret
    
    sectors:
    	.word 0
    
    msg1:
    	.byte 13,10
    	.ascii "Hello my JYOS !"
    	.byte 13,10,13,10
    
    .org 508
    root_dev:
    	.word ROOT_DEV
    boot_flag:
    	.word 0xAA55
    
    .text
    endtext:
    .data
    enddata:
    .bss
    endbss:
    

    下图是引导扇区的代码,其
    先将0x070c:0x0000处的代码,移动到0x9000:0x0000 处
    再跳转到go;

    在这里插入图片描述
    之后加载setup模块,如下图中,加载到0x9000后面的 0x9020
    在这里插入图片描述
    读入setup后,在屏幕上打印字符串;使用的是mov bp,msg1 mov ax, #1301 int 0x10
    利用0x10中断完成显示(并未运行setup!当前指针并未到9020;当前OK_load_setup最后会先读入system模块,再跳转到执行setup.s如下图所示)
    如果想要修改这个字符串:1. 修改msg1 2.修改对应字符串的大小:cx,#24中的24是字符串的长度;
    在这里插入图片描述
    下图为read_it中读入system模块的操作;完成后利用jmpi 给ip和cs赋值,完成跳转到setup,完成bootset;

    在这里插入图片描述


    setup.s的工作:

    读取物理内存大小,并记录,将 system模块移动到0地址处;
    在这里插入图片描述
    在setup的最后,需要完成2件事:
    1. 切换寻址模式、 2.跳转到0x0处开始执行system模块的代码;

    对于切换寻址模式:16-》32
    因为在当前情况下使用的寻址模式是(如下图)cs << 4 + ip:其中cs是一个16位寄存器,其 <<4最多拥有20位地址,也就是1MB的内存大小;
    这太小了,如今的计算机至少是4G的,因此需要切换寻址模式,不能使用 cs << 4 + ip

    切换的方法就是:下图中红色代码:使用cr0寄存器改变电路(修改末尾PE从 0—》1),从当前的 实模式 --》》》保护模式

    在这里插入图片描述
    在保护模式下,显然地址翻译不同,增加临时的GDT(global Description Table全局描述表)和IDT(中断描述)表;地址翻译从这个表中完成,得到真正的物理地址;这样上面图中的jmpi, 0 8 才能到0x0处;
    在这里插入图片描述


    system.s的工作:

    system模块相比于前面的bootsect 和 setup来说,要大得多!因为这是 真正用来校验的代码;
    他是由一堆文件编译出来的;

    1. 操作系统要想正常启动,前面的代码运行顺序是要严格控制的,像上面说的那样,1. bootsect.s 2. setup.s 3.system.s;
      system.s是通过makefile来指定使用哪些文件进行编译的;
      在这里插入图片描述
    2. 在head.s中做了啥?(没仔细看)
      重点:做了很多事,包括对于 gdt 和idt的设置;对于系统栈的设置等等;
      在这里插入图片描述
    3. 上面跳转到了after_page_tables,这里干了什么呢?
      首先push了一堆,入栈;接着 跳转到 setup_page 进行页表设置; 最后将栈顶出栈也就main函数出栈,开始执行main函数;当main 执行完成 就到了L6中,也就是死循环了;操作系统的main函数不会结束~一直执行;
      在这里插入图片描述
    4. main函数中做了什么?
      进行了一堆初始化工作,我们以mem_init内存初始化来看一下~;
      在这里插入图片描述
      可以说是终于看到了一些比较熟悉的东西了,这段代码是什么?
      这就是内存管理中的页式管理!页表的初始化,根据之前在setup.s中保存在0x90002中的本机内存大小,配合我们期望的操作系统内存分页大小(这里是 >> 12右移12位也就是将 总的地址数 / 每页的地址数 = 2^32 / 2^12 = 220),也就是分成220个页表;下面while中对每个页表进行初始化为0 ,但是前面不需要初始化,前面是操作系统用到的;

    在这里插入图片描述

    entry _start
    _start:
        mov ah,#0x03
        xor bh,bh
        int 0x10
        mov cx,#36
        mov bx,#0x0007
        mov bp,#msg1
        mov ax,#0x07c0
        mov es,ax
        mov ax,#0x1301
        int 0x10
    inf_loop:
        jmp inf_loop
    msg1:
        .byte   13,10
        .ascii  "Hello OS world, my name is LZJ"
        .byte   13,10,13,10
    .org 510
    boot_flag:
        .word   0xAA55
    
    展开全文
  • 一、系统启动顺序 启动第一步--加载BIOS,获取硬盘、内存、cpu等硬件信息; 启动第二步--读取MBR,获取MBR内容,将其复制到0×7c00地址所在的物理内存中,即 BootLoader(grub 等) 启动第三步--执行Boot...

    一、系统启动顺序

    启动第一步--加载BIOS,获取硬盘、内存、cpu等硬件信息;

    启动第二步--读取MBR,获取MBR内容,将其复制到0×7c00地址所在的物理内存中,即 BootLoader(grub 等)

    启动第三步--执行Boot Loader

      Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做好一切准备。通常,BootL oade:是严重地依赖于硬件而实现的,不同体系结构的系统存在着不同的Boot Loader。Boot Loader有若干种,其中Grub、Lilo和spfdisk是常见的Loader,这里以Grub为例来讲解吧。系统读取内存中的grub配置信息(一般为menu.lst或grub.lst),并依照此配置信息来启动不同的操作系统。

    启动第四步--加载内核

      根据grub设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作。此时,屏幕一般会输出“Uncompressing Linux”的提示。当解压缩内核完成后,屏幕输出“OK, booting the kernel”。

      系统将解压后的内核放置在内存之中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成Linux核心环境的建立。至此,Linux内核已经建立起来了,基于Linux的程序应该可以正常运行了。

      start_kenrel()定义在init/main.c中,它就类似于一般可执行程序中的main()函数,系统在此之前所做的仅仅是一些能让内核程序最低限度执行的初始化操作,真正的内核初始化过程是从这里才开始。函数start_kerenl()将会调用一系列的初始化函数,用来完成内核本身的各方面设置,目的是最终建立起基本完整的Linux核心环境。

      start_kernel()中主要执行了以下操作:

      (1) 在屏幕上打印出当前的内核版本信息。

      (2) 执行setup_arch(),对系统结构进行设置。

      (3)执行sched_init(),对系统的调度机制进行初始化。先是对每个可用CPU上的runqueque进行初始化;然后初始化0号进程(其task struct和系统空M堆栈在startup_32()中己经被分配)为系统idle进程,即系统空闲时占据CPU的进程。

      (4)执行parse_early_param()和parsees_args()解析系统启动参数。

      (5)执行trap_in itQ,先设置了系统中断向量表。0-19号的陷阱门用于CPU异常处理;然后初始化系统调用向量;最后调用cpu_init()完善对CPU的初始化,用于支持进程调度机制,包括设定标志位寄存器、任务寄存器、初始化程序调试相关寄存器等等。

      (6)执行rcu_init(),初始化系统中的Read-Copy Update互斥机制。

      (7)执行init_IRQ()函数,初始化用于外设的中断,完成对IDT的最终初始化过程。

      (8)执行init_timers(), softirq_init()和time_init()函数,分别初始系统的定时器机制,软中断机制以及系统日期和时间。

      (9)执行mem_init()函数,初始化物理内存页面的page数据结构描述符,完成对物理内存管理机制的创建。

      (10)执行kmem_cache_init(),完成对通用slab缓冲区管理机制的初始化工作。

      (11)执行fork_init(),计算出当前系统的物理内存容量能够允许创建的进程(线程)数量。

      (12)执行proc_caches_init() , bufer_init(), unnamed_dev_init() ,vfs_caches_init(), signals_init()等函数对各种管理机制建立起专用的slab缓冲区队列。

      (13 )执行proc_root_init()Wl数,对虚拟文件系统/proc进行初始化。

      在 start_kenrel()的结尾,内核通过kenrel_thread()创建出第一个系统内核线程(即1号进程),该线程执行的是内核中的init()函数,负责的是下一阶段的启动任务。最后调用cpues_idle()函数:进入了系统主循环体口默认将一直执行default_idle()函数中的指令,即CPU的halt指令,直到就绪队列中存在其他进程需要被调度时才会转向执行其他函数。此时,系统中唯一存在就绪状态的进程就是由kerne_hread()创建的init进程(内核线程),所以内核并不进入default_idle()函数,而是转向init()函数继续启动过程。

    启动第五步--用户层init依据inittab文件来设定运行等级

      内核被加载后,第一个运行的程序便是/sbin/init,该文件会读取/etc/inittab文件,并依据此文件来进行初始化工作。在fedora16中,该功能的执行方式有所修改,/sbin/init 是/bin/systemd的软连接,/etc/inittab文件也失去了原先的功能,具体内容可查看/etc/inittab文件中的说明。

        Linux的运行等级有如下几种:

      0:关机

      1:单用户模式

      2:无网络支持的多用户模式

      3:有网络支持的多用户模式

      4:保留,未使用

      5:有网络支持有X-Window支持的多用户模式

      6:重新引导系统,即重启

    可通过命令 init ? 来重启进入那个运行等级,如  init 3 ,重启进入文本模式。

    启动第六步--init进程执行

      在设定了运行等级后,Linux系统执行的第一个用户层文件就是/etc/rc.d/rc.sysinit脚本程序,它做的工作非常多,包括设定PATH、设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc等等。如果你有兴趣,可以到/etc/rc.d中查看一下rc.sysinit文件。fedora16 已经找不到文件 /etc/rc.d/rc.sysinit,估计是做了某些改动。

      线程init的最终完成状态是能够使得一般的用户程序可以正常地被执行,从而真正完成可供应用程序运行的系统环境。它主要进行的操作有:

      (1) 执行函数do_basic_setup(),它会对外部设备进行全面地初始化。

      (2) 构建系统的虚拟文件系统目录树,挂接系统中作为根目录的设备(其具体的文 件系统已经在上一步骤中注册)。

      (3) 打开设备/dev/console,并通过函数sys_dup()打开的连接复制两次,使得文件号0,1 ,2 全部指向控制台。这三个文件连接就是通常所说的“标准输入”stdin,“标准输出”stdout和“标准出错信息”stderr这三个标准I/O通道。

      (4) 准备好以上一切之后,系统开始进入用户层的初始化阶段。内核通过系统调用execve()加载执T子相应的用户层初始化程序,依次尝试加载程序"/sbin/initl"," /etc/init"," /bin/init',和“/bin/sh。只要其中有一个程序加载获得成功,那么系统就将开始用户层的初始化,而不会再回到init()函数段中。至此,init()函数结束,Linux内核的引导 部分也到此结束。

    启动第七步--加载启动内核模块

     具体是依据/etc/modules.d目录下的文件来装载内核模块

    启动第八步--执行不同运行级别的脚本程序

      根据运行级别的不同,系统会运行rc0.d到rc6.d中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。

    在目录 /etc/rc.d/init.d 中可查看。

    启动第九步--执行/etc/rc.d/rc.local

    rc.local就是在一切初始化工作后,Linux留给用户进行个性化的地方。你可以把你想设置和启动的东西放到这里。

    启动第十步--执行/bin/login程序,进入登录状态


    二、系统服务开启、关闭、查看


    从Fedora16开始,Redhat不再推荐ntsysv、chkconfig、service,而是建议使用新的服务管理工具systemctl  ,尽管旧指令也是可以用的。

    http://docs.fedoraproject.org/en-US/Fedora/16/html/System_Administrators_Guide/ch-Services_and_Daemons.html


    systemctl  enable  *.service   开机启动某服务

    systemctl disable *.service  开机不启动某服务







    • 开机时间分析(各种服务占用的时间)
    命令 :systemd-analyze
    后可跟参数:


    $ systemd-analyze  blame    会列出开机过程中服务所占的时间
    •  服务开启与关闭相关命令

    • 服务所在路径
    /lib/systemd/system


    展开全文
  • 启动就是在启动应用前,系统中没有该应用的任何进程信息。也就是刚开始打开应用的时候。 冷启动/热启动的区别:热启动就是用户使用返回键退出应用,然后马上又重新启动应用。Application在冷启动创建一次,热启动...

    什么是冷启动

    1. 冷启动的定义:
      冷启动就是在启动应用前,系统中没有该应用的任何进程信息。也就是刚开始打开应用的时候。
    2. 冷启动/热启动的区别:热启动就是用户使用返回键退出应用,然后马上又重新启动应用。Application在冷启动创建一次,热启动不会创建。
    3. 冷启动时间的计算:这个时间值从应用启动(创建进程)开始计算,到完成视图的第一次绘制(即Activity内容对用户可见)为止。

    冷启动流程

    1. Zygote进程中fork创建出一个新的进程
    2. 创建和初始化Application类、创建MainActivity类
    3. inflate布局、当onCreate/onStart/onResume方法都走完
    4. contentView的measure/layout/draw显示在界面上

    如何对冷启动的时间进行优化

    1. 减少onCreate()方法的工作量
    2. 不要让Application参与业务的操作
    3. 不要让Application进行耗时操作
    4. 不要以静态变量的方式在Application中保存数据
    5. 布局/mainThread
    展开全文
  • U盘安装系统必要知识点 当我们用U盘安装Windows系统时,必要了解区分它的启动方式,否则将发生安装失败或启动不了的情况,启动方式详见下表(红色标识为重要): 引导启动方式 Legacy ...
  • 操作系统知识点

    2019-10-02 06:01:03
    目录 计算机系统概述 ... 启动计算机  指令执行  中断 操作系统引论  操作系统定义  资源管理的观念  用户的观念  操作系统的产生和发展  操作系统特征  并发性  共享性  虚拟性 ...
  • 本文先从宏观角度介绍一些mysql相关的知识点,目的是为了让大家对mysql能有一个大体上的认知,后续再逐一对每个知识点的进行深入解读。 本文主要内容是根据掘金小册《从根儿上理解 MySQL》整理而来。如想详细了解,...
  • 记得更新MBR:用virtualbox给新硬盘装系统时,要先用pe系统更新下硬盘的mbr,否则启动dos或者是装好系统后是无法使用的。 记得设置主分区:不然无法从硬盘启动
  • 启动流程 - 运行级别 1、系统运行级别 0 - 关机 1 - 单用户模式,可以想象为windows的安全模式,主要用于系统修复 2 - 不完全的命令行模式,不含NFS服务 3 - 完全的命令行模式,就是标准的字符界面 4 - 系统保留 ...
  • 操作系统知识点大全

    2019-06-28 22:04:45
    2、操作系统完成的工作:负责所有程序的启动和结束、用户程序中对操作系统的条用、系统调用和中断、为常用的基本操作提供现成的实用程序、解决效率和安全问题 3、OS有用户接口和用户接口 4、OS的特征:并发、共享、...
  • 1.设置root用户密码,并进入root ubuntu@ubuntu $ sudo passwd root root@ubuntu $ su 2.查看磁盘挂在情况 root@ubuntu $ mount 3.管理员用户登录系统
  • Linux操作系统启动过程概要: 1.CPU读取BIOS指令 2.BIOS加载内核引导程序GRUB 3.GRUB加载内核 4.内核初始化,创建根文件系统。 5.init用户进程根据设定的级别启动操作系统 系统初始化会读取的文档或运行的...
  • 操作系统基础知识点

    2020-09-15 21:21:58
    操作系统启动流程7. 应用程序启动流程 1. 操作系统简单解析 操作系统是管理计算机硬件与软件资源的计算机程序,也是计算机系统的内核及基石; 操作系统需要处理的事务,如管理与配置内存,决定系统资源供需的优先...
  • ps -ef 查询所有进程,包含启动信息,启动用户、进程id pmap -x 查询进程内存占用 top 查看系统运行情况,查看负载,内存占用,cpu占用,用M按内存排序,用P按照cpu占用排序。top -Hp 制定进程输出线程信息。 du -h ...
  • 本文先从宏观角度介绍一些mysql相关的知识点,目的是为了让大家对mysql能有一个大体上的认知,后续再逐一对每个知识点的进行深入解读。本文主要内容是根据掘金小册《从根儿上理解 MySQL》整理而来。如想详细了解,...
  • 第六章 Linux系统管理 知识点 1. Linux系统启动过程如何 Linux在启动时首先进行加电自检加电自检是由计算机ROM内的一段BIOS代码对系统硬件状态以及用户设置参数进行检查 在加电自检完成之后去寻找硬盘中的启动引导...
  • 推荐系统相关知识点

    2019-03-17 22:53:47
    推荐系统相关相似度计算中的距离基于用户的协同过滤基于用户的协同过滤存在的问题:基于用户的协同过滤不流行原因基于物品的协同过滤冷启动问题隐语义模型隐语义模型与协同过滤的对比推荐系统中的衡量指标 ...
  • 手动更新系统: yum -y update 防火墙配置: service firewalld start //启动防火墙 systemctl enable firewalld.service //开机自启 selinux配置: vim /etc/selinux/config 修改: SELINUX=enforcing //...
  • 当计算机被加电以后,主振荡开始工作,电源象...初始化所有的矢量,导入闪屏程序,并通过IDE控制器初始化引导设备,将控制权交给操作系统,开始操作系统启动,主板的就完成了全面的工作,由维修的角度说明整个硬件是正常的.
  • 下面介绍的是基于Intel x86架构的CentOS系列操作系统启动流程。 1、Linux系统基础简介 (1)、Linux【系统组成】:内核+应用程序 或 内核+rootfs (2)、Linux的【运行环境】:内核空间 --------内核进程占用CPU...
  • 进程和线程-分别的概念 区别 适用范围 它/们分别的通讯方式 不同通讯...比如在linux下面启动一个新的进程,系统必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这是一种非常昂贵..
  • 关于Android自启动管理的相关知识点

    千次阅读 2015-10-14 09:16:04
    1.自启动的实现 1.添加权限。 ... 3.实现具体自启动广播接收器类代码。 2.发送BOOT_COMPLETED广播 3....1.应用处于stoped状态:安装完后没有启动(安装在/...是接收不到系统广播的(有的说是从3.1开始)。 2.应用安装在SD卡
  • "standard"默认启动模式, 每次启动该Activity都会创建一个新的实例,并将其放入当前任务(返回栈)中 "singleTop"如果目前已有一个该Activity的实例位于返回栈顶部,系统不会重新创建一个Activity,只是重新调用...
  • 1.pc机的系统启动流程 1.pc机  [1]BIOS (硬件初始化,启动方式)  [2]引导程序 (grub,lilo,...)  [3]OS (windows,Linux,Mac os)  [4]挂载文件系统(NTFS,FAT(16/32),EXT(2,3,4))  [5]应用程序 2....
  • 重装系统的一点知识

    2018-03-16 00:13:57
    首先,准备一个U盘,然后去官网上下载一个win10系统,再下载一个ultraiso,然后就可以开始制作U盘启动盘了,这个过程耗时比较长,并且U盘中不要留有任何重要资料,因为在制作过程中会自动格式化。 U盘启动盘制作完毕...
  • Android系统启动

    2020-10-13 13:36:18
    用来总结Android系统启动流程中涉及到的知识点,http://androidxref.com用来阅读源代码。 Android系统启动流程 为了了解init进程,首先要了解Android系统启动流程的前几步,以引入init进程。 启动电源以及系统启动...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,019
精华内容 807
关键字:

启动系统知识点