精华内容
下载资源
问答
  • 1. 在不同的操作系统上,oracle的物理体系结构不同:UNIX上,oracle实现为多个不同的操作系统进程,而Windows上则实现为一个多线程的进程。2. 数据库(database)和实例(instance)1)数据库是物理操作系统文件或磁盘的...

    1.  在不同的操作系统上,oracle的物理体系结构不同:

    UNIX上,oracle实现为多个不同的操作系统进程,而Windows上则实现为一个多线程的进程。

    2.  数据库(database)和实例(instance)

    1)   数据库是物理操作系统文件或磁盘的集合;实例是一组oracle后台进程/线程以及一个共享内存区,这些内存由同一个计算机上运行的线程/进程所共享。

    2)   实例和数据库之间的关系是:数据库可由多个实例装载和打开,而实例可以在任何时间点装载和打开一个数据库。(注:实例在其整个生存期中最多只能装载和打开一个数据库!)

    3.  连接oracle

    1) 最常见的两种方式:专用服务器(dedicated server)连接和共享服务器(shared server)连接。

    查看数据库采用何种模式的方法:

    1. 可以查看tnsnames.ora配置文件,里面会说明是dedicated还是shared。

    2. 查询v$session,例:SELECT SERVER FROM v$session;

    2) 专用服务器

    1. 如果使用一个专用服务器登陆数据库,则会创建一个新的线程/UNIX进程,提供专门的服务。

    例:使用工具pslist查看连接数据库前后的线程(Windows)

    连接前:

    E:\oracle\STUDY>pslist oracle

    pslist v1.28 - Sysinternals PsList

    Copyright ? 2000-2004 Mark Russinovich

    Sysinternals

    Process information for 54A60C349643440:

    Name                Pid Pri Thd  Hnd   Priv        CPU Time    Elapsed Time

    oracle             1844   8  36  762 636252     0:10:40.203     1:52:20.250

    连接后:

    E:\oracle\STUDY>sqlplus / as sysdba

    SQL*Plus: Release 11.1.0.6.0 - Production on 星期三 6月 3 09:59:35 2009

    Copyright (c) 1982, 2007, Oracle.  All rights reserved.

    连接到:

    Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production

    With the Partitioning, OLAP, Data Mining and Real Application Testing options

    SQL> host pslist oracle

    pslist v1.28 - Sysinternals PsList

    Copyright ? 2000-2004 Mark Russinovich

    Sysinternals

    Process information for 54A60C349643440:

    Name                Pid Pri Thd  Hnd   Priv        CPU Time    Elapsed Time

    oracle             1844   8  37  778 637604     0:10:40.125     1:52:12.046

    2.  在我登陆时,oracle总会为我创建一个新的进程,这通常称为专用服务器配置,这个服务器会在我的会话生存期中专门为我服务,对于每个会话,都会出现一个新的专用服务器,会话与专用服务器之间存在一对一的映射。专用服务器不是实例的一部分。客户进程(即想要连接数据库的程序)会通过某种网络通道(如TCP/IP socket)与这个专用服务器直接通信,并由这个服务器进程接受和执行我的SQL.

    3)  共享服务器

    1. 也称为多线程服务器(Multi-Threaded Server)或MTS。在共享服务器中,oracle使用一个“共享进程”池为大量用户提供服务,共享服务器实际上就是一种连接池机制。

    2. 在共享服务器连接方式中,与数据库连接的客户进程不会与共享服务器直接通信(在专用服务器连接中,客户进程会与专用服务器直接通信)。共享服务器方式下客户进程和共享服务器的“对话”流程如下:

    1) 客户连接向调度器发送一个请求,调度器首先将这个请求放在SGA中的请求队列中。

    2) 第一个可用的共享服务器从请求队列中取出这个请求并处理。

    3) 共享服务器的处理结束后,再把响应(返回码、数据等)放到响应队列中。

    4) 原来的调度器拿到这个响应,传回给客户。(原来的调度器一直在监听这个队列,发现有结果后,就会把结果传回给客户。)

    4)  TCP/IP连接的基本原理

    例:   sqlplus

    此处,客户是程序SQL*Plus,scott/tiger为用户名/密码,ora10g.localdomain是一个TNS服务名(TNS代表透明网络底层(Transparent Network Substrate),这是oracle客户处理远程连接的“基础”软件,有了它才可以建立对等通信。)。TNS连接串告诉oracle软件如何与远程数据库连接,一般客户机上运行的客户软件会读取一个tnsnames.ora文件(通常放置在【ORACLE_HOME\network\admin】目录下,【ORACLE_HOME】表示oracle安装目录的完整路径),内容可能如下(举例):

    ORA10G.LOCALDOMAIN =

    (DESCRIPTION =

    (ADDRESS_LIST =

    (ADDRESS = (PROTOCOL = TCP)(HOST =  localhost.localdomain)(PORT = 1521)

    )

    )

    (CONNECT_DATA =

    (SERVICE_NAME = ora10g)

    )

    )

    根据这个配置信息,oracle客户软件可以把我们使用的TNS连接串ora10g.localdomain映射到某些有用的信息(即:主机名、该主机上“监听器”进程接受(监听)连接的端口、该主机上所连接数据库的服务名)。现在,客户软件就知道要连接到哪里,它会与主机名为localhost.localdomain的服务器在端口1521上打开一条TCP/IP socket连接。如果服务器DBA安装并配置了Oracle Net,并且有一个监听器在端口1521上监听连接请求,就会收到这个连接(在网络环境中,服务器上会运行一个称为TNS监听器的进程,就是这个监听器进程能让我们与数据库物理连接。当它收到入站连接请求时,会使用自己的配置文件检查这个请求,可能会拒绝请求,也可能会接受请求,并真正建立连接。)

    对于专用服务器连接,监听器进程会为我们创建一个专用服务器,这个新的专用服务器进程继承了监听器建立的连接,现在就与数据库物理地连接上了。

    对于共享服务器连接,监听器会从可用的调度器池中选择一个调度器进程。监听器会向客户返回连接信息,其中说明了客户如何与调度器进程连接。监听器发回连接信息后,它的工作就结束了(监听器一直在特定主机的特定端口上运行,而调度器会在服务器上随意指派的端口上接受连接。监听器要知道调度器指定的这些随机端口号,并为我们选择一个调度器。),客户再与监听器断开连接,并与调度器直接连接,现在就与数据库有了一个物理连接。

    5)其它杂项

    如何查看数据库的数据文件、日志文件和控制文件?

    SELECT name FROM v$datafile;

    SELECT name FROM v$logfile;

    SELECT name FROM v$controlfile;

    展开全文
  • 简述Linux中断处理体系结构 /*  *硬件平台:韦东山嵌入式Linxu开发板(S3C2440.v3)  *软件平台:运行于VMware Workstation 12 Player下UbuntuLTS16.04_x64 系统  *参考资料:《嵌入式Linux应用开发...

    简述Linux中断处理体系结构

    • 硬件平台:韦东山嵌入式Linxu开发板(S3C2440.v3)
    • 软件平台:运行于VMware Workstation 12 Player下UbuntuLTS16.04_x64 系统
    • 参考资料:《嵌入式Linux应用开发手册》、《嵌入式Linux应用开发手册第2版》、https://blog.csdn.net/juS3Ve/article/details/81437432
    • 开发环境:Linux 2.6.22.6 内核、arm-linux-gcc-3.4.5-glibc-2.3.6工具链


    一、栈

    在介绍Linux中断处理体系结构之前,先来介绍一下栈。

    1、概念

      "栈“者,存储货物或供旅客住宿的地方,可引申为仓库、中转站,所以引入到计算机领域里,就是指数据暂时存储的地方,所以才有进栈、出栈的说法。
      栈,是一个线性表(数据结构),具有先进后出的特点。

    2、场景举例

    在中断的时候,我们通常需要到栈来进行保存现场的工作,下面通过一个场景来具体感受下栈的作用。
    场景:在函数A中调用函数B

    funA()
    {
    	//funB()之前的其他操作
    	funB();
    	//funB()之后的其他操作
    }
    

    执行过程:
     图画描述:
    在这里插入图片描述
    图片来自:《嵌入式Linux应用开发手册第2版》
     文字解释:
      ①、在执行funA()中的funB()之前的其他操作的指令时,根据翻译的汇编码正常执行
      ②、当funB()之前的其他操作的指令执行完毕后,进入到funB()函数中,此时
        {
          首先:把funB()之前的其他操作的指令的结果、数据、寄存器入栈,保存在程序A的栈中(瞬间完成)
          之后:执行funB()函数,把结果、数据、寄存器入栈,保存在程序B的栈中;;
          最后:funB()函数执行完毕后(是否释放B栈资源看具体程序),把栈A中保存的结果、数据、寄存器重新拿出来
        }
      ③、执行funB()之后的其他操作的指令

    二、Linux对中断处理的演进

    1、中断分类

      在Linux系统中,对中断进行了拓展了,分为你了硬件中断和软件中断。

    1.1 硬件中断

      硬件中断是一个异步信号,表明需要注意,,或需要改变在执行一个同步事件。硬件中断是由与系统相连的外设(比如网卡 硬盘 键盘等)产生的.。

    1.2 软件中断

      软中断的处理类似于硬中断,但是软中断仅仅由当前运行的进程产生

    2、中断处理原则

    2.1 不能嵌套

      中断处理函数需要调用 C 函数,这就需要用到栈。
      场景:假设中断 A 正在处理的过程中,假设又发生了中断 B,那么在栈里要保存 A 的现场,然后处理 B。在处理 B 的过程中又发生了中断 C,那么在栈里要保存 B 的现场,然后处理 C。如果中断嵌套突然暴发,那么栈将越来越大,栈终将耗尽系统会崩溃
      所以,为了防止这种情况发生,也是为了简单化中断的处理,在 Linux 系统上中断无法嵌套:即当前中断 A 没处理完之前,不会响应另一个中断 B(即使它的优先级更高)。
      抛转:在中断的下半部分可以相应其他中断
    (参考资料:《嵌入式Linux应用开发手册第2版》、https://blog.csdn.net/juS3Ve/article/details/81437432)

    2.2 越快越好

      在单芯片系统中,假设中断处理很慢,那应用程序在这段时间内就无法执行:系统显得很迟顿。
    在中断的处理过程中,该 CPU 是不能进行进程调度的,所以中断的处理要越快越好,尽早让其他中断能

    3、中断的上半部与下半部

      假如处理一个中断所消耗的时间过长,那么对于整个系统来说,给人的感觉就是很卡顿的(特别是对于可视化应用),所以Linux就引出了中断的上半部与下半部这个概念。

    3.1 中断的上半部

    在关中断(无法处理其他中断)的状态下,在关中断下处理紧急的事情。

    3.2 中断的下半部

    在开中断(中断允许打断)的状态下,处理非紧急的事情。

    整个流程如下:假如在A中断的下半部发生了B中断,则B中断结束后,回到A中断下半部,此时A、B中断的下半部,是汇集在一起处理的。
    在这里插入图片描述

    三、Linux中断处理体系框架

    在这里插入图片描述

    1. 发生中断时,CPU进入异常,执行异常向量vertor_irq的代码。
    2. vertor_irq中,最终会调用中断处理的总入口函数asm_do_IRQ
    3. asm do IRQ根据中断号调用 irq_desc数组项中的 handle_ irq
    4. handle irq会使用chip成员中的函数来设置硬件,比如清除中断、禁止中断、重新使能中断等。
    5. handle irq逐个调用用户在 action链表中注册的处理函数。

    所以,在实际编程中,需要初始化构造这些数据结构,

    • 比如 irq_desc数组项中的handle_ irq、chip等成员;
    • 用户注册中断时就是构造 action链表;
    • 用户卸载中断时就是从 action链表中去除不需要的项。
    展开全文
  • 简述Linux异常处理体系结构 /*  *硬件平台:韦东山嵌入式Linxu开发板(S3C2440.v3)  *软件平台:运行于VMware Workstation 12 Player下UbuntuLTS16.04_x64 系统  *参考资料:《嵌入式Linux应用开发...

    简述Linux异常处理体系结构


    前言

    通过分析linux-2.6.22.6的源码,大致介绍一下Linux异常处理体系结构。

    一、基础的知识点

    1、什么是异常

      指CPU内部出现的中断,即在CPU执行特定指令时出现的非法情况,就是可以打断CPU的正常运行流程的一些事情,如外部中断、未定义的指令、试图修改只读数据、执行swi指令等。

    2、异常的作用

      发生异常时,CPU暂停手中的工作,转去执行被中断的程序。
      在操作系统中,常通过异常来完成一些特定的功能。比较典型的就是用户程序可以通过swi指令触发swi异常,操作系统在swi异常处理函数中实现各种系统调用。

    3、异常向量基址

      ARM架构CPU的异常向量基址可以是0x00000000,也可以是0xffff0000,Linux内核则使用后者0xffff0000

    二、Linux内核是如何设置异常

      首先我们通过一张图回忆一下编写单片机按键的中断处理流程,对比分析出Linux内核的大致异常体系。
    在这里插入图片描述

    1、trap_init()函数分析

    这个函数是位于/arch/arm/kernel/traps.C文件中,函数的主要功能:

    • 设置各种异常的处理向量
    • 把异常向量复制到0xffff0000的位置
      源码如下:
    void __init trap_init(void)
    {
    	unsigned long vectors = CONFIG_VECTORS_BASE;	
    	extern char __stubs_start[], __stubs_end[];
    	extern char __vectors_start[], __vectors_end[];
    	extern char __kuser_helper_start[], __kuser_helper_end[];
    	int kuser_sz = __kuser_helper_end - __kuser_helper_start;
    
    	/*
    	 * Copy the vectors, stubs and kuser helpers (in entry-armv.S)
    	 * into the vector page, mapped at 0xffff0000, and ensure these
    	 * are visible to the instruction stream.
    	 */
    	memcpy((void *)vectors, __vectors_start, __vectors_end - __vectors_start);
    	memcpy((void *)vectors + 0x200, __stubs_start, __stubs_end - __stubs_start);
    	memcpy((void *)vectors + 0x1000 - kuser_sz, __kuser_helper_start, kuser_sz);
    
    	/*
    	 * Copy signal return handlers into the vector page, and
    	 * set sigreturn to be a pointer to these.
    	 */
    	memcpy((void *)KERN_SIGRETURN_CODE, sigreturn_codes,
    	       sizeof(sigreturn_codes));
    
    	flush_icache_range(vectors, vectors + PAGE_SIZE);
    	modify_domain(DOMAIN_USER, DOMAIN_CLIENT);
    }
    
    
    1. unsigned long vectors = CONFIG_VECTORS_BASE;:这个就是异常向量的基址0xffff0000
    2. extern char __vectors_start[], __vectors_end[];:二者之间是异常向量表
      源码如下:这个通过跳转指令,对于不同的异常,跳转去执行不同的代码如vector_irq
    __vectors_start:
    	swi	SYS_ERROR0
    	b	vector_und + stubs_offset
    	ldr	pc, .LCvswi + stubs_offset
    	b	vector_pabt + stubs_offset
    	b	vector_dabt + stubs_offset
    	b	vector_addrexcptn + stubs_offset
    	b	vector_irq + stubs_offset
    	b	vector_fiq + stubs_offset
    
    	.globl	__vectors_end
    __vectors_end:
    
    1. extern char __stubs_start[], __stubs_end[];:二者之间是负责处理更复杂的代码,如保存中断程序的执行环境,调用异常处理函数等
    __stubs_start:
    /*
     * Interrupt dispatcher
     */
    	vector_stub	irq, IRQ_MODE, 4
    
    	.long	__irq_usr			@  0  (USR_26 / USR_32)
    	.long	__irq_invalid			@  1  (FIQ_26 / FIQ_32)
    	.long	__irq_invalid			@  2  (IRQ_26 / IRQ_32)
    	.long	__irq_svc			@  3  (SVC_26 / SVC_32)
    	.long	__irq_invalid			@  4
    	.long	__irq_invalid			@  5
    	.long	__irq_invalid			@  6
    	.long	__irq_invalid			@  7
    	.long	__irq_invalid			@  8
    	.long	__irq_invalid			@  9
    	.long	__irq_invalid			@  a
    	.long	__irq_invalid			@  b
    	.long	__irq_invalid			@  c
    	.long	__irq_invalid			@  d
    	.long	__irq_invalid			@  e
    	.long	__irq_invalid			@  f
    
    /*
     * Data abort dispatcher
     * Enter in ABT mode, spsr = USR CPSR, lr = USR PC
     */
    	vector_stub	dabt, ABT_MODE, 8
    
    	.long	__dabt_usr			@  0  (USR_26 / USR_32)
    	.long	__dabt_invalid			@  1  (FIQ_26 / FIQ_32)
    	.long	__dabt_invalid			@  2  (IRQ_26 / IRQ_32)
    	.long	__dabt_svc			@  3  (SVC_26 / SVC_32)
    	.long	__dabt_invalid			@  4
    	.long	__dabt_invalid			@  5
    	.long	__dabt_invalid			@  6
    	.long	__dabt_invalid			@  7
    	.long	__dabt_invalid			@  8
    	.long	__dabt_invalid			@  9
    	.long	__dabt_invalid			@  a
    	.long	__dabt_invalid			@  b
    	.long	__dabt_invalid			@  c
    	.long	__dabt_invalid			@  d
    	.long	__dabt_invalid			@  e
    	.long	__dabt_invalid			@  f
    
    /*
     * Prefetch abort dispatcher
     * Enter in ABT mode, spsr = USR CPSR, lr = USR PC
     */
    	vector_stub	pabt, ABT_MODE, 4
    
    	.long	__pabt_usr			@  0 (USR_26 / USR_32)
    	.long	__pabt_invalid			@  1 (FIQ_26 / FIQ_32)
    	.long	__pabt_invalid			@  2 (IRQ_26 / IRQ_32)
    	.long	__pabt_svc			@  3 (SVC_26 / SVC_32)
    	.long	__pabt_invalid			@  4
    	.long	__pabt_invalid			@  5
    	.long	__pabt_invalid			@  6
    	.long	__pabt_invalid			@  7
    	.long	__pabt_invalid			@  8
    	.long	__pabt_invalid			@  9
    	.long	__pabt_invalid			@  a
    	.long	__pabt_invalid			@  b
    	.long	__pabt_invalid			@  c
    	.long	__pabt_invalid			@  d
    	.long	__pabt_invalid			@  e
    	.long	__pabt_invalid			@  f
    
    /*
     * Undef instr entry dispatcher
     * Enter in UND mode, spsr = SVC/USR CPSR, lr = SVC/USR PC
     */
    	vector_stub	und, UND_MODE
    
    	.long	__und_usr			@  0 (USR_26 / USR_32)
    	.long	__und_invalid			@  1 (FIQ_26 / FIQ_32)
    	.long	__und_invalid			@  2 (IRQ_26 / IRQ_32)
    	.long	__und_svc			@  3 (SVC_26 / SVC_32)
    	.long	__und_invalid			@  4
    	.long	__und_invalid			@  5
    	.long	__und_invalid			@  6
    	.long	__und_invalid			@  7
    	.long	__und_invalid			@  8
    	.long	__und_invalid			@  9
    	.long	__und_invalid			@  a
    	.long	__und_invalid			@  b
    	.long	__und_invalid			@  c
    	.long	__und_invalid			@  d
    	.long	__und_invalid			@  e
    	.long	__und_invalid			@  f
    
    	.align	5
    
    /*=============================================================================
     * Undefined FIQs
     *-----------------------------------------------------------------------------
     * Enter in FIQ mode, spsr = ANY CPSR, lr = ANY PC
     * MUST PRESERVE SVC SPSR, but need to switch to SVC mode to show our msg.
     * Basically to switch modes, we *HAVE* to clobber one register...  brain
     * damage alert!  I don't think that we can execute any code in here in any
     * other mode than FIQ...  Ok you can switch to another mode, but you can't
     * get out of that mode without clobbering one register.
     */
    vector_fiq:
    	disable_fiq
    	subs	pc, lr, #4
    
    /*=============================================================================
     * Address exception handler
     *-----------------------------------------------------------------------------
     * These aren't too critical.
     * (they're not supposed to happen, and won't happen in 32-bit data mode).
     */
    
    vector_addrexcptn:
    	b	vector_addrexcptn
    
    /*
     * We group all the following data together to optimise
     * for CPUs with separate I & D caches.
     */
    	.align	5
    
    .LCvswi:
    	.word	vector_swi
    
    	.globl	__stubs_end
    __stubs_end
    
    1. 通过下面的函数,把异常向量表处理异常的函数等的内存地址映射到异常向量基址0xffff0000中。
       memcpy((void *)vectors, __vectors_start, __vectors_end - __vectors_start);
       memcpy((void *)vectors + 0x200, __stubs_start, __stubs_end - __stubs_start);
    

      在发生异常时,根据不同的情况 通过异常向量表跳转到不同的处理异常的函数中,执行保存现场,处理异常/中断,恢复现场等操作。

    2、entry-armv.S文件源码分析

      这个代码位于/arch/arm/kernel/目录下,trap_init()函数以及其他异常向量跳转处理函数都位于这个文件中。
    如上面所截取的:
    extern char __vectors_start[], __vectors_end[];异常向量表的源码,extern char __stubs_start[], __stubs_end[];复杂的代码,如保存中断程序的执行环境,调用异常处理函数等的跳转代码。

    展开全文
  • Linux体系结构

    千次阅读 2018-10-18 22:13:14
    为便于更好的了解Linux系统的体系结构,先介绍常用的windows系统的体系结构。  Windows系列操作系统采用微内核体系结构,模块化设计,将对象分为用户模式层和内和模式层。用户模式层由一组组价(子系统)构成,将...

    为便于更好的了解Linux系统的体系结构,先介绍常用的windows系统的体系结构。

           Windows系列操作系统采用微内核体系结构,模块化设计,将对象分为用户模式层和内和模式层。用户模式层由一组组价(子系统)构成,将与内核模式组件有关的必要信息与其最终用户和应用程序隔离开来。内核模式层有权访问系统数据和硬件,能直接访问内存,并在被保护的内存区域中执行。

    Linux

             Linux操作系统是采用单内核模式的操作系统,内核代码结构紧凑,执行速度快。内核是Linux操作系统的主要部分,它可实现进程管理、内存管理、文件系统、设备驱动和网络系统等功能,为核外的所有程序提供运行环境。

            Linux采用分层设计,它包括4个层次。每层只能与它相邻的层通信,层次间具有从上到下的依赖关系,靠上的层依赖于靠下的层,但靠下的层并不依赖于靠上的层。各层系统介绍如下。

    • 用户应用程序层:

             位于整个系统的最顶层,是Linux系统上运行的应用程序集合,常见的用户应用程序有字处理应用程序、多媒体处理应用程序、网络应用程序等。
    • 操作系统服务:

             位于用户应用程序与系统内核之间,主要是指那些为用户提供服务且执行操作系统部分功能的程序,为应用程序提供系统内核的调用接口。X窗口系统、Shell命令解释系统、内核编程接口等就属于操作系统服务子系统。这一部分也称为系统程序。
    • Linux内核:

              靠近硬件的是内核,即Linux操作系统常驻内存部分。Linux内核是整个操作系统的核心,由它实现对硬件资源的抽象和访问调度。它为上层调用提供了一个统一的虚拟机器接口,在编写上层程序的时候不需要考虑计算机使用何种类型的物理硬件,也不需要考虑临界资源问题。每个上层进程执行时就像它是计算机上的唯一进程,独占了系统的所有内存和其他硬件资源。但实际上,系统可以同时运行多个进程,由Linux内核保证和进程对临界资源的安全使用。所有运行在内核之上的程序可分为系统程序和用户程序两大类,但他们统统运行在用户模式之下。内核之外的所有程序必须通过系统调用才能进入操作系统的内核。
    • 硬件系统:

              包含Linux所使用的所有物理设备,如CPU、内存、硬盘和网络设备等。
    展开全文
  • Linux体系结构

    千次阅读 2019-09-13 17:13:32
    Linux体系结构主要分为用户态(用户上层活动)和内核态,在 Linux 启动的时候,首先会启动内核,内核从本质上看是一段管理计算机硬件设备的程序。 内核为上层应用程序提供了访问的接口,即系统调用,是一种不能...
  • Linux体系结构结构

    2020-04-30 16:17:30
    Linux体系结构 从大的方面讲,Linux 体系结构可以分为两块: 用户空间(User Space) :用户空间又包括用户的应用程序(User Applications)、C 库(C Library) 。 内核空间(Kernel Space) :内核空间又包括系统...
  • Linux网络体系结构

    千次阅读 2012-05-18 16:05:46
    一 内核结构  按功能,Linux内核可以划分为5个不同的部分,每一部分处理一项明确的功能,同时又向其他内核组件提供这项功能。... 先来看一下Linux网络体系结构   从上图可以看出Linux网络
  •  从两个角度考察Linux文件系统层的体系结构,首先是高层体系结构的角度。然后进行深层次讨论,介绍实现文件系统层的主要结构。 高层体系结构  尽管大多数文件系统代码在内核中(后面讨论的用户空间文件系统...
  • ORACLE体系结构简述

    2020-05-26 11:08:18
    ORACLE体系结构(短知识) SQL的解析开始的位置是PGA–>私有SQL区 PGA (PROGRAM GLOBAL AREA)程序全局区 数据库SESSION保存在UGA里面(USER GLOBAL AREA)用户全局区 SGA (SYSTEM GLOBAL AREA)系统全局区 PGA+SGA...
  • Linux --- Linux体系结构

    千次阅读 2019-05-02 12:54:04
    Linux体系结构 uname -a 如果想在Windows里面跑linux 指令 安装 cigwin 查看所有系统调用 man 2 syscalls 其中的2 代表要查的是系统调用 3 代表公共库函数 例如:ls -lrt which ls 查看文件指令 ls cat ...
  • NUMA体系结构简述

    2017-06-15 13:47:29
     NUMA体系结构中多了Node的概念,这个概念其实是用来解决core的分组的问题,具体参见下图来理解(图中的OS CPU可以理解thread,那么core就没有在图中画出),从图中可以看出每个Socket里有两个node,共有4个socket...
  • linux网络体系结构

    2015-12-21 09:37:12
    一 内核结构  按功能,Linux内核可以划分为5个不同的部分,每一部分处理一项明确的功能,同时又向其他内核组件提供这项功能。这种结构也反映到内核的源代码上——这5部分都... 先来看一下Linux网络体系结构  
  • Linux中默认的输入是键盘,默认的输出是终端。若想改变输入/输出的目标,则需要使用输入输出重定向符号来改变输入输出目标重定向到新的目标。 输入输出重定向符号有以下几种:  >文件名 或 1> 文件名:将该文件...
  • [Linux]基本体系结构

    2019-10-01 23:21:38
    Linux体系结构 一个完整的操作系统由内核、命令解释层、文件系统等部分组成 内核 执行最底层的任务,保证系统正常运行,协调多个并发进程,管理进程内存。 主要组成模块: 文件系统驱动模块 硬件设备驱动模块 ...
  • 第1章 处理器体系结构京东购书:https://item.jd.com/12152745.html 试读地址:http://www.epubit.com.cn/book/details/4835本章思考题 1.请简述精简指令集RISC和复杂指令集CISC的区别。 2.请简述数值0x...
  • 1. Linux 内核简介 内核:在计算机科学中是一个用来管理软件发出的数据 I/O(输入与输出)要求的计算机程序,将这些要求转 译为数据处理的指令并交由中央处理器(CPU)及计算机中其他电子组件进行处理,是现代操作系统中...
  • Linux简述

    2018-08-23 18:20:26
    对于操作系统而言,我相信我们大多数的人都知道Windows系统吧,确切的说也许连三岁小孩都知道,只要玩过电脑的都知道的吗,但是近年来,在我们业内热门的却是linux,随之我们在上大学的时候便开设了linux的课程,...
  • S3C2440中的中断处理最终是通过IRQ实现的,在Linux驱动之异常处理体系结构简析已经介绍了IRQ异常的处理过程,最终分析到了一个C函数asm_do_IRQ,接下来继续分析asm_do_IRQ,目标是推导出中断的处理过程。 看到asm_...
  • 第1章 处理器体系结构 京东购书:item.jd.com/12152745.ht… 试读地址:www.epubit.com.cn/book/detail… 本章思考题1.请简述精简指令集RISC和复杂指令集CISC的区别。2.请简述数值0x12345678在大小端字节序处理器...
  • Linux系统与内核是如何构成的   从图上我们可以知道,Linux系统是由用户空间和内核空间两部分组成。 Linux简化了分段机制,使得虚拟地址与线性地址总是一致,因此,Linux的虚拟地址空间也为0~4G。 Linux内核将这4G...

空空如也

空空如也

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

简述linux的体系结构

linux 订阅