• Linux系统结构


    Linux操作系统主要分为:内核、shell,应用程序

     一、Linux内核

    内核直接与底层硬件进行通信,决定整个系统的稳定性,如图:

     总的来讲分为四部分:内存管理,进程管理,硬件管理,虚拟文件系统管理。

    1. 内存管理

    Linux里面有一个名词叫swap分区,是物理磁盘上的一块空间,称为虚拟内存。Linux实际上管理了两部分内存,一部分是物理内存,另一部分就是这个虚拟内存。从微观上看,虚拟内存和真实物理内存之间也在不断的交换数据。进一步,Linux会将内存资源池(虚拟内存和物理内存)划分成很多份内存页即Memory Page,当然内核自己会记录和维护每一块内存页和虚拟内存、物理内存的对应关系。

    2. 进程管理

    Linux启动时,首先会启动一个init进程,再由这个init进程来启动其它所有进程。Linux系统里一般会有一个目录来存放开机启动的进程。如: ubuntu 下的/etc/rcX.local

    root@test:/etc# cd rc
    rc0.d/    rc1.d/    rc2.d/    rc3.d/    rc4.d/    rc5.d/    rc6.d/    rc.local  rcS.d/ 

    Linux的init采用了“运行级”,运行级决定了如果运行/etc/rcX.d里面定义的进程。运行级越低,代表init越先运行一些基本的简单的进程。比如Linux的单用户模式,就是运行级为1时运行的。

    Ubuntu的运行级配置文件位置:

    root@test:/lib/systemd/system# ls -l runleve*.target      
    lrwxrwxrwx 1 root root 15 Feb 15  2017 runlevel0.target -> poweroff.target
    lrwxrwxrwx 1 root root 13 Feb 15  2017 runlevel1.target -> rescue.target
    lrwxrwxrwx 1 root root 17 Feb 15  2017 runlevel2.target -> multi-user.target
    lrwxrwxrwx 1 root root 17 Feb 15  2017 runlevel3.target -> multi-user.target
    lrwxrwxrwx 1 root root 17 Feb 15  2017 runlevel4.target -> multi-user.target
    lrwxrwxrwx 1 root root 16 Feb 15  2017 runlevel5.target -> graphical.target
    lrwxrwxrwx 1 root root 13 Feb 15  2017 runlevel6.target -> reboot.target

    查看和修改运行级:

    root@test:/lib/systemd/system# runlevel        
    N 5
    root@test:/lib/systemd/system# systemctl get-default
    graphical.target
    root@test:/lib/systemd/system# 
    
    例如: 设置系统的默认运行级别为5
    root@test:/lib/systemd/system# systemctl set-default graphical.target
    root@test:/lib/systemd/system# rm -f /etc/systemd/system/default.target
    root@test:/lib/systemd/system# ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target

    3. 硬件设备管理

    Linux内核通过驱动程序来管理硬件设备。具体就是在内核代码中加入具体设备的驱动程序,最早以前,技术不太成熟时,每一次由于添加新硬件,需要添加驱动程序时,内核都得重新编译;现在Linux提出了内核模块的概念,类似于热插拔,可以单独加载进内核中,而不需要内核重新编译。

    4. 虚拟文件系统管理

    Linxu支持多种不同的文件系统同时使用,如Ext2,Ext4,nfs,fat等。Linux内核采用了VFS(Virtual File System)向下对接各种抽象的文件系统,向上提供统一的比如对于读写等操作的函数和API接口。

    因此对于上层用户来讲,并不需要关系底层具体的文件系统是什么,只需要调用统一的API来操作就可以。

  • 相关阅读:
    Linux下常用软件安装(tar bz gz等压缩包的压缩和解压)
    《那些年啊,那些事——一个程序员的奋斗史》五
    IT人士 不能一辈子靠技术生存
    十八年开发经历小结
    《那些年啊,那些事——一个程序员的奋斗史》一
    软件工程及软件项目开发流程
    《那些年啊,那些事——一个程序员的奋斗史》三
    AJAX技术解读
    全程追踪入侵JSP网站服务器
    《C语言程序设计》教学的几点体会
  • 原文地址:https://www.cnblogs.com/reatual/p/14218709.html
Copyright © 2020-2023  润新知