SlideShare una empresa de Scribd logo
1 de 58
Xilkernel


    Ing. Vincent Claes



             
Inleiding

• OS?
• Single-task OS
• Multi-Tasking en Multi-User OS
• Process and Threads
• Memory and Storage
• Networks: Services and protocols
• TCP/IP Networks
• Security: design considerations
• XMK + MPSoC
Xilkernel - overview

• Small, robust and modular kernel
• RTOS
• POSIX API
• Microblaze, PowerPC
• Xilinx Platform Studio (EDK)
• Light-weight (16 – 32 kb)
Xilkernel – Why use a kernel?

• Typical embedded applications
  – Various tasks in particular sequence or
    schedule
• Tasks → individual applications on a
  operating system (OS) is much more
  intuitive
• Enables you to write code at an
  abstract level
Xilkernel – Why use a kernel?

• Many applications rely on OS services
  like
  – file systems,
  – time management,
  – and so forth.
• Xilkernel is a thin library that provides
  these essential services. Porting or using
  common and open source libraries (such
  as graphics or network protocols) might
  require some form of these OS services.
Xilkernel - Configuration

• Configuration
  – “Software Platform Settings”
• Kernel starts by calling
  xilkernel_main()
  – Code after this → never reached
• Include library “xmk.h” as first library
Xilkernel - Organization
Xilkernel Development Flow
Xilkernel Process Model

• Units of execution within xilkernel: process
  contexts
• Scheduling done at process context level
• POSIX threads API is primary user-visible
  interface to process contexts
• Interfaces allow creating, destroying and
  manipulating created application threads
  (see Xilkernel API)
• Threads manipulated with thread identifiers
• Underlying process context is identified
  with process identifier pid_t
Xilkernel scheduling model

• Xilkernel
  – Priority-driven, preemptive scheduling
    with time slicing (SCHED_PRIO)
  – Simple Round-robin scheduling
    (SCHED_RR)
• Cannot be changed on a per-thread
  basis.
• Configured statically (at kernel
  generation time)
Xilkernel scheduling model

• SCHED_RR
 – Single ready queue
 – Each process context executes for a
   configured time slice before yielding
   execution to the next process context in
   the queue
Xilkernel scheduling model

• SCHED_PRIO
 – As many ready queues as there are
   priority levels
 – Priority 0 → highest priority
 – Higher values → lower priority
Xilkernel scheduling model

• SCHED_PRIO
Xilkernel – Process Context States
• Each process context
  – PROC_NEW
     • A newly created process
  – PROC_READY
     • A process ready to execute
  – PROC_RUN
     • A process that is running
  – PROC_WAIT
     • A process that is blocked on a resource
  – PROC_DELAY
     • A process that is waiting for a timeout
  – PROC_TIMED_WAIT
     • A process that is blocked on a resource and has an
       associated timeout
Xilkernel – Process Context States
Xilkernel - Features

• Supplies programmer extra abstracted
  advanced functionality
  – Thread Management
  – Semaphores
  – Message Queues
  – Shared Memory
  – Mutex Locks
  – Dynamic Buffer Memory Management
  – Software Timers
  – User-Level Interrupt Handling APIs
  – ELF Process Management (Deprecated)

• Non-lineair execution !
• Controlled resource sharing
Xilkernel - Threading

• Thread (in xilkernel): a function that is
  not necessarily processed linearly
• Threads are coded like functions, but
  can work “in parallel”
• Threads
  – Interacting with each other
  – Pass data back and forth
Xilkernel - Threading

• At least one thread required to spawn
  from the system at kernel start
• Main threads → void* without inputs
• “OS and Libraries”
  – “config_pthread_support”
    • static_pthread_table
Xilkernel - Threading

• Xilkernel
  – 2 scheduling modes
    • SCHED_PRIO
       – Priority based scheduling
           » Lower priority threads will always yield to
             higher priority threads (lower priority number)
             untill higher priority thread finishes or pthread-
             joining is used
           » If 2 threads with same priority → round-robin
             based scheduling
    • SCHED_RR
       – Round-Robin based scheduling
          » All threads must be processed at close-to the
            same time. (“parallel”)
Xilkernel - Threading

• Pthread support
  –   pthread_create()
  –   pthread_exit()
  –   pthread_join()
  –   pthread_attr_init()
  –   pthread_setschedparam()
Xilkernel – Thread Management

• Xilkernel
  – Basic POSIX threads API
• Thread creation and manipulation in
  standard POSIX notation
• Threads identified by a unique thread
  identifier
  – type: pthread_t
Xilkernel - Semaphores

• Xilkernel supports Kernel allocated
  POSIX semaphores
  – Used for synchronization
• POSIX semaphores
  – Counting semaphores (also below zero)
    • Negative value: number of processes blocked
      on the semaphore)
• Named semaphores
Xilkernel - Semaphores

• Mutex + extra functionality
  – Can be given string names
  – Contain “counting” information
    • How many threads it is blocking
  – More advanced waiting functions such as
    timed-waiting
Xilkernel - Semaphores

• sem_init()
• sem_getvalue()
• sem_wait()
• sem_post()
Xilkernel – Message Queues

• Xilkernel supports Kernel allocated X/
  Open System Interface (XSI) message
  queues
• XSI = optional interfaces under POSIX
• Message queues → IPC mechanism
• Depends on semaphore module and
  dynamic buffer memory allocation
  module
Xilkernel – Message Queues

• Extremely powerful feature
• Easy and safe means of transferring
  data back and forth between multiple
  processes
• Messaging is safe because the
  functionality uses semaphores
  internally
• Messages can take in custom structs
Xilkernel – Message Queues

• 4 functions are needed to setup, send
  and receive messages between
  threads
• Support for multiple messages in the
  system
• msgget()
• msgctl()
• msgsnd()
• msgrcv()
Xilkernel – Shared Memory

• Xilkernel supports Kernel-allocated
  XSI shared memory
  – XSI: X/Open System Interface, an optional
    interface under POSIX
• Shared memory
  – Low-latency IPC mechanism
• Shared memory blocks required
  during run-time must be identified
  and specified during system
  configuration
Xilkernel – Shared Memory

• Specification
  – Buffer memory is allocated to each
    shared memory region
• Shared Memory
  – Not allocated dynamically at run-time
Xilkernel – Shared Memory

• Xilkernel supports Kernel-allocated
  XSI shared memory
  – X/Open System Interface
    • Set of optional interfaces under POSIX
• Shared Memory
  – Common, low-latency IPC mechanism
  – Shared memory blocks
    • Must be identified and specified during
      system configuration
Xilkernel – Shared Memory

• From this specification
  – Buffer memory allocated to each shared
    memory region
• Shared memory is currently not
  allocated dynamically at run-time
• Optional module can be configured in
  or out during system specification
Xilkernel – Shared Memory

• int shmget()
• int shmctl()
• void* shmat()
• int shm_dt()
Xilkernel – Mutex Locks
• Xilkernel has support for Kernel allocated POSIX thread mutex locks
• This synchronization mechanism can be used alongside of the
  pthread API
• Mutex lock types
   – PTHREAD_MUTEX_DEFAULT
      • Cannot be locked repeatedly by the owner. Attempts by a
        thread to relock an already held mutex, or to lock a mutex
        that was held by another thread when that thread
        terminated result in a deadlock condition.
   – PTHREAD_MUTEX_RECURSIVE
      • A recursive mutex can be locked repeatedly by the owner.
        The mutex doesn't become unlocked until the owner has
        called pthread_mutex_unlock() for each successful lock
        request that it has outstanding on the mutex.
Xilkernel - Mutex

• “Mutual exclusion lock”
  – Very simple form of semaphore
• pthread_mutex_init()
• pthread_mutex_lock()
• pthread_mutex_unlock()
• pthread_mutexattr_init()
• pthread_mutexattr_settype()
Xilkernel – Dynamic Buffer Memory
            Management
• Xilkernel provides a buffer memory
  allocation scheme, can be used by
  applications that need dynamic memory
  allocation
• Alternatives for standard C memory
  allocation routines like malloc() and free()
  which are much slower and bigger, though
  more powerful
• The allocation routines hand off pieces of
  memory from a pool of memory that the
  user passes to the buffer memory manager.
Xilkernel – Dynamic Buffer Memory
            Management
• The buffer memory manager manages
  the pool of memory. You can
  dynamically create new pools of
  memory.
• You can statically specify the different
  memory blocks sizes and number of
  such memory blocks required for your
  applications
• This method of buffer management is
  relatively simple, small and a fast way of
  allocating memory.
Xilkernel – Dynamic Memory

• Used for allocating buffers of custom
  sizes and widths
• bufcreate()
• bufdestroy()
• bufmalloc()
• buffree()
Xilkernel – Software Timers

• Xilkernel provides software timer
  functionality, for time relating
  processing.
  – unsigned int xget_clock_ticks()
  – time_t time(time_t *timer)
  – unsigned sleep(unsigned int ms)
Xilkernel – Interrupt Handling

• Xilkernel abstracts primary interrupt
  handling requirements from the user
  application
• Even though the Kernel is functional
  without any interrupts, it makes sense
  for the system to be driven by a single
  timer interrupt for scheduling.
Xilkernel – Interrupt Handling

• Kernel handles the main timer
  interrupt, using it as the Kernel tick to
  perform scheduling.
• The timer interrupt is initialized and
  tied to the vectoring code during
  system initialization.
• This Kernel pulse provides software
  timer facilities and time-related
  routines also.
Xilkernel – Interrupt Handling

• Additionally, Xilkernel can handle
  multiple interrupts when connected
  through an interrupt controller, and
  works with the opb_intc interrupt
  controller core.
Xilkernel – Interrupt Handling

• Basic Interrupt Service in Xilkernel
Xilkernel – Exception Handling

• Xilkernel handles exceptions for the
  MicroBlaze processor, threating them as
  faulting conditions by the executing
  processes/threads.
• Xilkernel kills the faulting process and
  reports using a message to the console
  (if verbose mode is on) as to the nature
  of the exception.
• You cannot register your own handlers
  for these exceptions and Xilkernel
  handles them all natively.
Xilkernel – Interrupts in C

• Xilkernel abstracts the function calls
  to the interrupt controller
• Peripherals must be tied to the
  interrupt controller in hardware
  – 1. “Software Platform Settings” under
    “Interrupt Handlers” give desired interrupt a
    handler name. The interrupt controller does
    not require a handler unless the user would
    like a special function call for any interrupt
    that occurs
Xilkernel – Interrupts in C

– 2. In main code, initialize the interrupting
  peripheral with it's API
– 3. Initialize the interrupting peripheral's
  interrupt with it's API and start it running if
  required (such as a timer)
– 4. use the xilkernel function:
  “enable_interrupt()” - which takes in the
  interrupt ID of the peripheral found in
  “xparameters.h”. For the enable function
  call, it is of type “int_id_t”
– 5. Have a function prepared with the handler
  name
Xilkernel – Memory Protection

• Memory protection is an extremely
  useful feature that can increase the
  robustness, reliability, and fault
  tolerance of your Xilkernel-based
  application.
Xilkernel – Memory Protection

• Memory protection requires support
  from the hardware.
• Xilkernel is designed to make use of
  the MicroBlaze Memory Management
  (Protection) Unit (MMU) features when
  available. This allows you to build fail-
  safe applications that each run within
  the valid sandbox of the system, as
  determined by the executable file and
  available I/O devices.
Xilkernel – Memory Protection

• Note: Full virtual memory
  management is not supported by
  Xilkernel. Even when a full MMU is
  available on MicroBlaze, only
  transparent memory translations are
  used, and there is no concept of
  demand paging.
• Note: Xilkernel does not support the
  same set of features using the MMU
  on PowerPC processors.
Xilkernel – Hardware Requirements

• Scheduling and all the dependent
  features require a periodic Kernel tick
  and typically some kind of timer is
  used.
• Xilkernel has been designed to be
  able to work with either the Xilinx
  fit_timer IP core or the opb_timer IP
  core.
Xilkernel – Hardware Requirements

• Xilkernel has also been designed to
  work in scenarios involving multiple-
  interrupting peripherals.
• The opb_intc IP core is used to handle
  the hardware interrupts and then feed
  a single IRQ line from the controller to
  the processor.
Xilkernel – Hardware Requirements

• By specifying the name of the
  interruptcontroller peripheral in the
  software platform configuration, you
  would be getting Kernel awareness of
  multiple interrupts. Xilkernel would
  automatically initialize the hardware
  cores, interrupt system, and the
  second level of software handlers as a
  part of its startup.
• You don't have to do this manually.
Xilkernel – Hardware Requirements

• Xilkernel handles non-cascaded
  interrupt controllers; cascaded
  interrupt controllers are not
  supported.
Xilkernel – System Initialization

• The entry point for the Kernel is the
  xilkernel_main( ) routine defined in
  main.c.
• Any user initialization that must be
  performed can be done before the call
  to xilkernel_main( ). This includes any
  system-wide features that might need
  to be enabled before invoking
  xilkernel_main( ).
Xilkernel – System Initialization

• These are typically machine-state
  features such as cache enablement or
  hardware exception enablement that
  must be quot;always ONquot; even when
  context switching between
  applications.
• Make sure to set up such system
  states before invoking xilkernel_main(
  ).
Xilkernel – System Initialization

• The first action that is performed
  within xilkernel_init is kernel-specific
• hardware initialization.
  – This includes
    • registering the interrupt handlers and
      configuring the system timer,
    • as well as memory protection initialization.
      Interrupts/exceptions are not enabled
• after completing hw_init( ). The
  sys_init( ) routine is entered next.
Xilkernel – System Initialization
• This routine performs initialization of each module, such as
  processes and threads, initializing in the following order:
    – 1. Internal process context structures
    – 2. Ready queues
    – 3. pthread module
    – 4. Semaphore module
    – 5. Message queue module
    – 6. Shared memory module
    – 7. Memory allocation module
    – 8. Software timers module
    – 9. Idle task creation
    – 10. Static pthread creation
• After these steps, interrupts, and exceptions are enabled, the
  Kernel loops infinitely in the idle task, enabling the scheduler to
  start scheduling processes.
Xilkernel – Example MSS
Xilkernel - Links

• Wireless Open-Access Research Platform
  – http://warp.rice.edu/trac/wiki/xilkernel_ref
  – http://warp.rice.edu/trac/wiki/ppc_prog_overv
• Microblaze SMP Project
  – http://www.escet.urjc.es/~phuerta/SMP_proje
• University of Dayton
  – http://academic.udayton.edu/markpatterson/
• Team iBox
  – www.et.byu.edu/groups/ibox/public/doc

Más contenido relacionado

La actualidad más candente

第11回ACRiウェビナー_東工大/坂本先生ご講演資料
第11回ACRiウェビナー_東工大/坂本先生ご講演資料第11回ACRiウェビナー_東工大/坂本先生ご講演資料
第11回ACRiウェビナー_東工大/坂本先生ご講演資料直久 住川
 
Slideshare - PCIe
Slideshare - PCIeSlideshare - PCIe
Slideshare - PCIeJin Wu
 
Intel DPDK Step by Step instructions
Intel DPDK Step by Step instructionsIntel DPDK Step by Step instructions
Intel DPDK Step by Step instructionsHisaki Ohara
 
Introduction to DPDK
Introduction to DPDKIntroduction to DPDK
Introduction to DPDKKernel TLV
 
DWARF Data Representation
DWARF Data RepresentationDWARF Data Representation
DWARF Data RepresentationWang Hsiangkai
 
Message Signaled Interrupts
Message Signaled InterruptsMessage Signaled Interrupts
Message Signaled InterruptsAnshuman Biswal
 
COSCUP 2020 RISC-V 32 bit linux highmem porting
COSCUP 2020 RISC-V 32 bit linux highmem portingCOSCUP 2020 RISC-V 32 bit linux highmem porting
COSCUP 2020 RISC-V 32 bit linux highmem portingEric Lin
 
Identifying PCIe 3.0 Dynamic Equalization Problems
Identifying PCIe 3.0 Dynamic Equalization ProblemsIdentifying PCIe 3.0 Dynamic Equalization Problems
Identifying PCIe 3.0 Dynamic Equalization Problemsteledynelecroy
 
PCIe Gen 3.0 Presentation @ 4th FPGA Camp
PCIe Gen 3.0 Presentation @ 4th FPGA CampPCIe Gen 3.0 Presentation @ 4th FPGA Camp
PCIe Gen 3.0 Presentation @ 4th FPGA CampFPGA Central
 
あるRISC-V CPUの 浮動小数点数(異常なし)
あるRISC-V CPUの 浮動小数点数(異常なし)あるRISC-V CPUの 浮動小数点数(異常なし)
あるRISC-V CPUの 浮動小数点数(異常なし)たけおか しょうぞう
 
The Next Generation Firewall for Red Hat Enterprise Linux 7 RC
The Next Generation Firewall for Red Hat Enterprise Linux 7 RCThe Next Generation Firewall for Red Hat Enterprise Linux 7 RC
The Next Generation Firewall for Red Hat Enterprise Linux 7 RCThomas Graf
 
Traffic Engineering Using Segment Routing
Traffic Engineering Using Segment Routing Traffic Engineering Using Segment Routing
Traffic Engineering Using Segment Routing Cisco Canada
 
I2C Subsystem In Linux-2.6.24
I2C Subsystem In Linux-2.6.24I2C Subsystem In Linux-2.6.24
I2C Subsystem In Linux-2.6.24Varun Mahajan
 
High Bandwidth Memory(HBM)
High Bandwidth Memory(HBM)High Bandwidth Memory(HBM)
High Bandwidth Memory(HBM)HARINATH REDDY
 
Microsemi FPGA はいいぞ,FPGAの紹介とおさそい
Microsemi FPGA はいいぞ,FPGAの紹介とおさそいMicrosemi FPGA はいいぞ,FPGAの紹介とおさそい
Microsemi FPGA はいいぞ,FPGAの紹介とおさそいTakayasu Shibata
 

La actualidad más candente (20)

第11回ACRiウェビナー_東工大/坂本先生ご講演資料
第11回ACRiウェビナー_東工大/坂本先生ご講演資料第11回ACRiウェビナー_東工大/坂本先生ご講演資料
第11回ACRiウェビナー_東工大/坂本先生ご講演資料
 
Slideshare - PCIe
Slideshare - PCIeSlideshare - PCIe
Slideshare - PCIe
 
PCIe
PCIePCIe
PCIe
 
Intel DPDK Step by Step instructions
Intel DPDK Step by Step instructionsIntel DPDK Step by Step instructions
Intel DPDK Step by Step instructions
 
Introduction to DPDK
Introduction to DPDKIntroduction to DPDK
Introduction to DPDK
 
DWARF Data Representation
DWARF Data RepresentationDWARF Data Representation
DWARF Data Representation
 
Message Signaled Interrupts
Message Signaled InterruptsMessage Signaled Interrupts
Message Signaled Interrupts
 
COSCUP 2020 RISC-V 32 bit linux highmem porting
COSCUP 2020 RISC-V 32 bit linux highmem portingCOSCUP 2020 RISC-V 32 bit linux highmem porting
COSCUP 2020 RISC-V 32 bit linux highmem porting
 
Linux I2C
Linux I2CLinux I2C
Linux I2C
 
Identifying PCIe 3.0 Dynamic Equalization Problems
Identifying PCIe 3.0 Dynamic Equalization ProblemsIdentifying PCIe 3.0 Dynamic Equalization Problems
Identifying PCIe 3.0 Dynamic Equalization Problems
 
PCIe Gen 3.0 Presentation @ 4th FPGA Camp
PCIe Gen 3.0 Presentation @ 4th FPGA CampPCIe Gen 3.0 Presentation @ 4th FPGA Camp
PCIe Gen 3.0 Presentation @ 4th FPGA Camp
 
Understanding DPDK
Understanding DPDKUnderstanding DPDK
Understanding DPDK
 
あるRISC-V CPUの 浮動小数点数(異常なし)
あるRISC-V CPUの 浮動小数点数(異常なし)あるRISC-V CPUの 浮動小数点数(異常なし)
あるRISC-V CPUの 浮動小数点数(異常なし)
 
The Next Generation Firewall for Red Hat Enterprise Linux 7 RC
The Next Generation Firewall for Red Hat Enterprise Linux 7 RCThe Next Generation Firewall for Red Hat Enterprise Linux 7 RC
The Next Generation Firewall for Red Hat Enterprise Linux 7 RC
 
Traffic Engineering Using Segment Routing
Traffic Engineering Using Segment Routing Traffic Engineering Using Segment Routing
Traffic Engineering Using Segment Routing
 
MENOG-Segment Routing Introduction
MENOG-Segment Routing IntroductionMENOG-Segment Routing Introduction
MENOG-Segment Routing Introduction
 
I2C Subsystem In Linux-2.6.24
I2C Subsystem In Linux-2.6.24I2C Subsystem In Linux-2.6.24
I2C Subsystem In Linux-2.6.24
 
High Bandwidth Memory(HBM)
High Bandwidth Memory(HBM)High Bandwidth Memory(HBM)
High Bandwidth Memory(HBM)
 
Pcie drivers basics
Pcie drivers basicsPcie drivers basics
Pcie drivers basics
 
Microsemi FPGA はいいぞ,FPGAの紹介とおさそい
Microsemi FPGA はいいぞ,FPGAの紹介とおさそいMicrosemi FPGA はいいぞ,FPGAの紹介とおさそい
Microsemi FPGA はいいぞ,FPGAの紹介とおさそい
 

Destacado

EtherCAT @ Hogeschool PXL (PXL-TECH)
EtherCAT @ Hogeschool PXL (PXL-TECH)EtherCAT @ Hogeschool PXL (PXL-TECH)
EtherCAT @ Hogeschool PXL (PXL-TECH)Vincent Claes
 
Thread And Seam Construction
Thread And Seam ConstructionThread And Seam Construction
Thread And Seam ConstructionMackenzie Walton
 
Industrial Revolution Powerpoint
Industrial Revolution PowerpointIndustrial Revolution Powerpoint
Industrial Revolution Powerpointtheironegoodson
 
ScilabTEC 2015 - Xilinx
ScilabTEC 2015 - XilinxScilabTEC 2015 - Xilinx
ScilabTEC 2015 - XilinxScilab
 
Hadoop Summit Europe 2014: Apache Storm Architecture
Hadoop Summit Europe 2014: Apache Storm ArchitectureHadoop Summit Europe 2014: Apache Storm Architecture
Hadoop Summit Europe 2014: Apache Storm ArchitectureP. Taylor Goetz
 

Destacado (6)

Maker Revolution
Maker RevolutionMaker Revolution
Maker Revolution
 
EtherCAT @ Hogeschool PXL (PXL-TECH)
EtherCAT @ Hogeschool PXL (PXL-TECH)EtherCAT @ Hogeschool PXL (PXL-TECH)
EtherCAT @ Hogeschool PXL (PXL-TECH)
 
Thread And Seam Construction
Thread And Seam ConstructionThread And Seam Construction
Thread And Seam Construction
 
Industrial Revolution Powerpoint
Industrial Revolution PowerpointIndustrial Revolution Powerpoint
Industrial Revolution Powerpoint
 
ScilabTEC 2015 - Xilinx
ScilabTEC 2015 - XilinxScilabTEC 2015 - Xilinx
ScilabTEC 2015 - Xilinx
 
Hadoop Summit Europe 2014: Apache Storm Architecture
Hadoop Summit Europe 2014: Apache Storm ArchitectureHadoop Summit Europe 2014: Apache Storm Architecture
Hadoop Summit Europe 2014: Apache Storm Architecture
 

Similar a Xilkernel

Evergreen Sysadmin Survival Skills
Evergreen Sysadmin Survival SkillsEvergreen Sysadmin Survival Skills
Evergreen Sysadmin Survival SkillsEvergreen ILS
 
Intro To .Net Threads
Intro To .Net ThreadsIntro To .Net Threads
Intro To .Net Threadsrchakra
 
Tuning parallelcodeonsolaris005
Tuning parallelcodeonsolaris005Tuning parallelcodeonsolaris005
Tuning parallelcodeonsolaris005dflexer
 
Lec 9-os-review
Lec 9-os-reviewLec 9-os-review
Lec 9-os-reviewMothi R
 
Brief Introduction to Parallella
Brief Introduction to ParallellaBrief Introduction to Parallella
Brief Introduction to ParallellaSomnath Mazumdar
 
System Device Tree and Lopper: Concrete Examples - ELC NA 2022
System Device Tree and Lopper: Concrete Examples - ELC NA 2022System Device Tree and Lopper: Concrete Examples - ELC NA 2022
System Device Tree and Lopper: Concrete Examples - ELC NA 2022Stefano Stabellini
 
Fedora Virtualization Day: Linux Containers & CRIU
Fedora Virtualization Day: Linux Containers & CRIUFedora Virtualization Day: Linux Containers & CRIU
Fedora Virtualization Day: Linux Containers & CRIUAndrey Vagin
 
Lec 10-linux-review
Lec 10-linux-reviewLec 10-linux-review
Lec 10-linux-reviewabinaya m
 
Multithreading computer architecture
 Multithreading computer architecture  Multithreading computer architecture
Multithreading computer architecture Haris456
 
2. Vagin. Linux containers. June 01, 2013
2. Vagin. Linux containers. June 01, 20132. Vagin. Linux containers. June 01, 2013
2. Vagin. Linux containers. June 01, 2013ru-fedora-moscow-2013
 
New hope is comming? Project Loom.pdf
New hope is comming? Project Loom.pdfNew hope is comming? Project Loom.pdf
New hope is comming? Project Loom.pdfKrystian Zybała
 
cachegrand: A Take on High Performance Caching
cachegrand: A Take on High Performance Cachingcachegrand: A Take on High Performance Caching
cachegrand: A Take on High Performance CachingScyllaDB
 
Multithreaded processors ppt
Multithreaded processors pptMultithreaded processors ppt
Multithreaded processors pptSiddhartha Anand
 
Current and Future of Non-Volatile Memory on Linux
Current and Future of Non-Volatile Memory on LinuxCurrent and Future of Non-Volatile Memory on Linux
Current and Future of Non-Volatile Memory on Linuxmountpoint.io
 
Taming Non-blocking Caches to Improve Isolation in Multicore Real-Time Systems
Taming Non-blocking Caches to Improve Isolation in Multicore Real-Time SystemsTaming Non-blocking Caches to Improve Isolation in Multicore Real-Time Systems
Taming Non-blocking Caches to Improve Isolation in Multicore Real-Time SystemsHeechul Yun
 
Nodes and Networks for HPC computing
Nodes and Networks for HPC computingNodes and Networks for HPC computing
Nodes and Networks for HPC computingrinnocente
 

Similar a Xilkernel (20)

General Purpose GPU Computing
General Purpose GPU ComputingGeneral Purpose GPU Computing
General Purpose GPU Computing
 
Evergreen Sysadmin Survival Skills
Evergreen Sysadmin Survival SkillsEvergreen Sysadmin Survival Skills
Evergreen Sysadmin Survival Skills
 
Intro To .Net Threads
Intro To .Net ThreadsIntro To .Net Threads
Intro To .Net Threads
 
Memory model
Memory modelMemory model
Memory model
 
Tuning parallelcodeonsolaris005
Tuning parallelcodeonsolaris005Tuning parallelcodeonsolaris005
Tuning parallelcodeonsolaris005
 
Lec 9-os-review
Lec 9-os-reviewLec 9-os-review
Lec 9-os-review
 
Windows kernel
Windows kernelWindows kernel
Windows kernel
 
Brief Introduction to Parallella
Brief Introduction to ParallellaBrief Introduction to Parallella
Brief Introduction to Parallella
 
System Device Tree and Lopper: Concrete Examples - ELC NA 2022
System Device Tree and Lopper: Concrete Examples - ELC NA 2022System Device Tree and Lopper: Concrete Examples - ELC NA 2022
System Device Tree and Lopper: Concrete Examples - ELC NA 2022
 
Fedora Virtualization Day: Linux Containers & CRIU
Fedora Virtualization Day: Linux Containers & CRIUFedora Virtualization Day: Linux Containers & CRIU
Fedora Virtualization Day: Linux Containers & CRIU
 
Lec 10-linux-review
Lec 10-linux-reviewLec 10-linux-review
Lec 10-linux-review
 
Multithreading computer architecture
 Multithreading computer architecture  Multithreading computer architecture
Multithreading computer architecture
 
2. Vagin. Linux containers. June 01, 2013
2. Vagin. Linux containers. June 01, 20132. Vagin. Linux containers. June 01, 2013
2. Vagin. Linux containers. June 01, 2013
 
New hope is comming? Project Loom.pdf
New hope is comming? Project Loom.pdfNew hope is comming? Project Loom.pdf
New hope is comming? Project Loom.pdf
 
cachegrand: A Take on High Performance Caching
cachegrand: A Take on High Performance Cachingcachegrand: A Take on High Performance Caching
cachegrand: A Take on High Performance Caching
 
Multithreaded processors ppt
Multithreaded processors pptMultithreaded processors ppt
Multithreaded processors ppt
 
Current and Future of Non-Volatile Memory on Linux
Current and Future of Non-Volatile Memory on LinuxCurrent and Future of Non-Volatile Memory on Linux
Current and Future of Non-Volatile Memory on Linux
 
Taming Non-blocking Caches to Improve Isolation in Multicore Real-Time Systems
Taming Non-blocking Caches to Improve Isolation in Multicore Real-Time SystemsTaming Non-blocking Caches to Improve Isolation in Multicore Real-Time Systems
Taming Non-blocking Caches to Improve Isolation in Multicore Real-Time Systems
 
Mmap failure analysis
Mmap failure analysisMmap failure analysis
Mmap failure analysis
 
Nodes and Networks for HPC computing
Nodes and Networks for HPC computingNodes and Networks for HPC computing
Nodes and Networks for HPC computing
 

Más de Vincent Claes

Percepio Tracealyzer for FreeRTOS on MiniZED
Percepio Tracealyzer for FreeRTOS on MiniZEDPercepio Tracealyzer for FreeRTOS on MiniZED
Percepio Tracealyzer for FreeRTOS on MiniZEDVincent Claes
 
Xilinx Vitis FreeRTOS Hello World
Xilinx Vitis FreeRTOS Hello WorldXilinx Vitis FreeRTOS Hello World
Xilinx Vitis FreeRTOS Hello WorldVincent Claes
 
Programming STM32L432 Nucleo with Keil MDK
Programming STM32L432 Nucleo with Keil MDKProgramming STM32L432 Nucleo with Keil MDK
Programming STM32L432 Nucleo with Keil MDKVincent Claes
 
Debugging Xilinx Zynq Project using ILA Integrated Logic Analyzer IP Block
Debugging Xilinx Zynq Project using ILA Integrated Logic Analyzer IP BlockDebugging Xilinx Zynq Project using ILA Integrated Logic Analyzer IP Block
Debugging Xilinx Zynq Project using ILA Integrated Logic Analyzer IP BlockVincent Claes
 
Using Virtual IO (VIO) on Xilinx ZYNQ FPGA's
Using Virtual IO (VIO) on Xilinx ZYNQ FPGA'sUsing Virtual IO (VIO) on Xilinx ZYNQ FPGA's
Using Virtual IO (VIO) on Xilinx ZYNQ FPGA'sVincent Claes
 
Profiling Xilinx Zynq Software Applications in SDK (MiniZED board)
Profiling Xilinx Zynq Software Applications in SDK (MiniZED board)Profiling Xilinx Zynq Software Applications in SDK (MiniZED board)
Profiling Xilinx Zynq Software Applications in SDK (MiniZED board)Vincent Claes
 
Workshop: Introductie tot Python
Workshop: Introductie tot PythonWorkshop: Introductie tot Python
Workshop: Introductie tot PythonVincent Claes
 
Installation Anaconda Navigator for Python Workshop
Installation Anaconda Navigator for Python WorkshopInstallation Anaconda Navigator for Python Workshop
Installation Anaconda Navigator for Python WorkshopVincent Claes
 
ZYNQ BRAM Implementation
ZYNQ BRAM ImplementationZYNQ BRAM Implementation
ZYNQ BRAM ImplementationVincent Claes
 
Implementing a Database and API for your Cloud Service
Implementing a Database and API for your Cloud ServiceImplementing a Database and API for your Cloud Service
Implementing a Database and API for your Cloud ServiceVincent Claes
 
Launching Python Cloud Services for AI/IoT Projects
Launching Python Cloud Services for AI/IoT ProjectsLaunching Python Cloud Services for AI/IoT Projects
Launching Python Cloud Services for AI/IoT ProjectsVincent Claes
 
Real Time Filtering on Embedded ARM
Real Time Filtering on Embedded ARMReal Time Filtering on Embedded ARM
Real Time Filtering on Embedded ARMVincent Claes
 
R Markdown, Rpubs & github publishing and Shiny by Example
R Markdown, Rpubs & github publishing and Shiny by ExampleR Markdown, Rpubs & github publishing and Shiny by Example
R Markdown, Rpubs & github publishing and Shiny by ExampleVincent Claes
 
Using Texas Instruments Code Composer Studio for The CC3200XL Launchpad
Using Texas Instruments Code Composer Studio for The CC3200XL LaunchpadUsing Texas Instruments Code Composer Studio for The CC3200XL Launchpad
Using Texas Instruments Code Composer Studio for The CC3200XL LaunchpadVincent Claes
 
Hogeschool PXL Smart Mirror
Hogeschool PXL Smart MirrorHogeschool PXL Smart Mirror
Hogeschool PXL Smart MirrorVincent Claes
 
Softcore vs Hardcore processor
Softcore vs Hardcore processorSoftcore vs Hardcore processor
Softcore vs Hardcore processorVincent Claes
 
Implementing an interface in r to communicate with programmable fabric in a x...
Implementing an interface in r to communicate with programmable fabric in a x...Implementing an interface in r to communicate with programmable fabric in a x...
Implementing an interface in r to communicate with programmable fabric in a x...Vincent Claes
 
Debugging IoT Sensor Interfaces (SPI) with Digilent Analog Discovery 2
Debugging IoT Sensor Interfaces (SPI) with Digilent Analog Discovery 2Debugging IoT Sensor Interfaces (SPI) with Digilent Analog Discovery 2
Debugging IoT Sensor Interfaces (SPI) with Digilent Analog Discovery 2Vincent Claes
 

Más de Vincent Claes (20)

Percepio Tracealyzer for FreeRTOS on MiniZED
Percepio Tracealyzer for FreeRTOS on MiniZEDPercepio Tracealyzer for FreeRTOS on MiniZED
Percepio Tracealyzer for FreeRTOS on MiniZED
 
Xilinx Vitis FreeRTOS Hello World
Xilinx Vitis FreeRTOS Hello WorldXilinx Vitis FreeRTOS Hello World
Xilinx Vitis FreeRTOS Hello World
 
Programming STM32L432 Nucleo with Keil MDK
Programming STM32L432 Nucleo with Keil MDKProgramming STM32L432 Nucleo with Keil MDK
Programming STM32L432 Nucleo with Keil MDK
 
Debugging Xilinx Zynq Project using ILA Integrated Logic Analyzer IP Block
Debugging Xilinx Zynq Project using ILA Integrated Logic Analyzer IP BlockDebugging Xilinx Zynq Project using ILA Integrated Logic Analyzer IP Block
Debugging Xilinx Zynq Project using ILA Integrated Logic Analyzer IP Block
 
Using Virtual IO (VIO) on Xilinx ZYNQ FPGA's
Using Virtual IO (VIO) on Xilinx ZYNQ FPGA'sUsing Virtual IO (VIO) on Xilinx ZYNQ FPGA's
Using Virtual IO (VIO) on Xilinx ZYNQ FPGA's
 
Profiling Xilinx Zynq Software Applications in SDK (MiniZED board)
Profiling Xilinx Zynq Software Applications in SDK (MiniZED board)Profiling Xilinx Zynq Software Applications in SDK (MiniZED board)
Profiling Xilinx Zynq Software Applications in SDK (MiniZED board)
 
Workshop: Introductie tot Python
Workshop: Introductie tot PythonWorkshop: Introductie tot Python
Workshop: Introductie tot Python
 
Installation Anaconda Navigator for Python Workshop
Installation Anaconda Navigator for Python WorkshopInstallation Anaconda Navigator for Python Workshop
Installation Anaconda Navigator for Python Workshop
 
ZYNQ BRAM Implementation
ZYNQ BRAM ImplementationZYNQ BRAM Implementation
ZYNQ BRAM Implementation
 
Implementing a Database and API for your Cloud Service
Implementing a Database and API for your Cloud ServiceImplementing a Database and API for your Cloud Service
Implementing a Database and API for your Cloud Service
 
Launching Python Cloud Services for AI/IoT Projects
Launching Python Cloud Services for AI/IoT ProjectsLaunching Python Cloud Services for AI/IoT Projects
Launching Python Cloud Services for AI/IoT Projects
 
Real Time Filtering on Embedded ARM
Real Time Filtering on Embedded ARMReal Time Filtering on Embedded ARM
Real Time Filtering on Embedded ARM
 
R Markdown, Rpubs & github publishing and Shiny by Example
R Markdown, Rpubs & github publishing and Shiny by ExampleR Markdown, Rpubs & github publishing and Shiny by Example
R Markdown, Rpubs & github publishing and Shiny by Example
 
Using Texas Instruments Code Composer Studio for The CC3200XL Launchpad
Using Texas Instruments Code Composer Studio for The CC3200XL LaunchpadUsing Texas Instruments Code Composer Studio for The CC3200XL Launchpad
Using Texas Instruments Code Composer Studio for The CC3200XL Launchpad
 
Hogeschool PXL Smart Mirror
Hogeschool PXL Smart MirrorHogeschool PXL Smart Mirror
Hogeschool PXL Smart Mirror
 
Softcore vs Hardcore processor
Softcore vs Hardcore processorSoftcore vs Hardcore processor
Softcore vs Hardcore processor
 
MySQL / PHP Server
MySQL / PHP ServerMySQL / PHP Server
MySQL / PHP Server
 
Implementing an interface in r to communicate with programmable fabric in a x...
Implementing an interface in r to communicate with programmable fabric in a x...Implementing an interface in r to communicate with programmable fabric in a x...
Implementing an interface in r to communicate with programmable fabric in a x...
 
fTales workshop
fTales workshopfTales workshop
fTales workshop
 
Debugging IoT Sensor Interfaces (SPI) with Digilent Analog Discovery 2
Debugging IoT Sensor Interfaces (SPI) with Digilent Analog Discovery 2Debugging IoT Sensor Interfaces (SPI) with Digilent Analog Discovery 2
Debugging IoT Sensor Interfaces (SPI) with Digilent Analog Discovery 2
 

Último

Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024The Digital Insurer
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfOverkill Security
 

Último (20)

Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 

Xilkernel

  • 1. Xilkernel Ing. Vincent Claes    
  • 2. Inleiding • OS? • Single-task OS • Multi-Tasking en Multi-User OS • Process and Threads • Memory and Storage • Networks: Services and protocols • TCP/IP Networks • Security: design considerations • XMK + MPSoC
  • 3. Xilkernel - overview • Small, robust and modular kernel • RTOS • POSIX API • Microblaze, PowerPC • Xilinx Platform Studio (EDK) • Light-weight (16 – 32 kb)
  • 4. Xilkernel – Why use a kernel? • Typical embedded applications – Various tasks in particular sequence or schedule • Tasks → individual applications on a operating system (OS) is much more intuitive • Enables you to write code at an abstract level
  • 5. Xilkernel – Why use a kernel? • Many applications rely on OS services like – file systems, – time management, – and so forth. • Xilkernel is a thin library that provides these essential services. Porting or using common and open source libraries (such as graphics or network protocols) might require some form of these OS services.
  • 6. Xilkernel - Configuration • Configuration – “Software Platform Settings” • Kernel starts by calling xilkernel_main() – Code after this → never reached • Include library “xmk.h” as first library
  • 9. Xilkernel Process Model • Units of execution within xilkernel: process contexts • Scheduling done at process context level • POSIX threads API is primary user-visible interface to process contexts • Interfaces allow creating, destroying and manipulating created application threads (see Xilkernel API) • Threads manipulated with thread identifiers • Underlying process context is identified with process identifier pid_t
  • 10. Xilkernel scheduling model • Xilkernel – Priority-driven, preemptive scheduling with time slicing (SCHED_PRIO) – Simple Round-robin scheduling (SCHED_RR) • Cannot be changed on a per-thread basis. • Configured statically (at kernel generation time)
  • 11. Xilkernel scheduling model • SCHED_RR – Single ready queue – Each process context executes for a configured time slice before yielding execution to the next process context in the queue
  • 12. Xilkernel scheduling model • SCHED_PRIO – As many ready queues as there are priority levels – Priority 0 → highest priority – Higher values → lower priority
  • 14. Xilkernel – Process Context States • Each process context – PROC_NEW • A newly created process – PROC_READY • A process ready to execute – PROC_RUN • A process that is running – PROC_WAIT • A process that is blocked on a resource – PROC_DELAY • A process that is waiting for a timeout – PROC_TIMED_WAIT • A process that is blocked on a resource and has an associated timeout
  • 15. Xilkernel – Process Context States
  • 16. Xilkernel - Features • Supplies programmer extra abstracted advanced functionality – Thread Management – Semaphores – Message Queues – Shared Memory – Mutex Locks – Dynamic Buffer Memory Management – Software Timers – User-Level Interrupt Handling APIs – ELF Process Management (Deprecated) • Non-lineair execution ! • Controlled resource sharing
  • 17. Xilkernel - Threading • Thread (in xilkernel): a function that is not necessarily processed linearly • Threads are coded like functions, but can work “in parallel” • Threads – Interacting with each other – Pass data back and forth
  • 18. Xilkernel - Threading • At least one thread required to spawn from the system at kernel start • Main threads → void* without inputs • “OS and Libraries” – “config_pthread_support” • static_pthread_table
  • 19. Xilkernel - Threading • Xilkernel – 2 scheduling modes • SCHED_PRIO – Priority based scheduling » Lower priority threads will always yield to higher priority threads (lower priority number) untill higher priority thread finishes or pthread- joining is used » If 2 threads with same priority → round-robin based scheduling • SCHED_RR – Round-Robin based scheduling » All threads must be processed at close-to the same time. (“parallel”)
  • 20. Xilkernel - Threading • Pthread support – pthread_create() – pthread_exit() – pthread_join() – pthread_attr_init() – pthread_setschedparam()
  • 21. Xilkernel – Thread Management • Xilkernel – Basic POSIX threads API • Thread creation and manipulation in standard POSIX notation • Threads identified by a unique thread identifier – type: pthread_t
  • 22. Xilkernel - Semaphores • Xilkernel supports Kernel allocated POSIX semaphores – Used for synchronization • POSIX semaphores – Counting semaphores (also below zero) • Negative value: number of processes blocked on the semaphore) • Named semaphores
  • 23. Xilkernel - Semaphores • Mutex + extra functionality – Can be given string names – Contain “counting” information • How many threads it is blocking – More advanced waiting functions such as timed-waiting
  • 24. Xilkernel - Semaphores • sem_init() • sem_getvalue() • sem_wait() • sem_post()
  • 25. Xilkernel – Message Queues • Xilkernel supports Kernel allocated X/ Open System Interface (XSI) message queues • XSI = optional interfaces under POSIX • Message queues → IPC mechanism • Depends on semaphore module and dynamic buffer memory allocation module
  • 26. Xilkernel – Message Queues • Extremely powerful feature • Easy and safe means of transferring data back and forth between multiple processes • Messaging is safe because the functionality uses semaphores internally • Messages can take in custom structs
  • 27. Xilkernel – Message Queues • 4 functions are needed to setup, send and receive messages between threads • Support for multiple messages in the system • msgget() • msgctl() • msgsnd() • msgrcv()
  • 28. Xilkernel – Shared Memory • Xilkernel supports Kernel-allocated XSI shared memory – XSI: X/Open System Interface, an optional interface under POSIX • Shared memory – Low-latency IPC mechanism • Shared memory blocks required during run-time must be identified and specified during system configuration
  • 29. Xilkernel – Shared Memory • Specification – Buffer memory is allocated to each shared memory region • Shared Memory – Not allocated dynamically at run-time
  • 30. Xilkernel – Shared Memory • Xilkernel supports Kernel-allocated XSI shared memory – X/Open System Interface • Set of optional interfaces under POSIX • Shared Memory – Common, low-latency IPC mechanism – Shared memory blocks • Must be identified and specified during system configuration
  • 31. Xilkernel – Shared Memory • From this specification – Buffer memory allocated to each shared memory region • Shared memory is currently not allocated dynamically at run-time • Optional module can be configured in or out during system specification
  • 32. Xilkernel – Shared Memory • int shmget() • int shmctl() • void* shmat() • int shm_dt()
  • 33. Xilkernel – Mutex Locks • Xilkernel has support for Kernel allocated POSIX thread mutex locks • This synchronization mechanism can be used alongside of the pthread API • Mutex lock types – PTHREAD_MUTEX_DEFAULT • Cannot be locked repeatedly by the owner. Attempts by a thread to relock an already held mutex, or to lock a mutex that was held by another thread when that thread terminated result in a deadlock condition. – PTHREAD_MUTEX_RECURSIVE • A recursive mutex can be locked repeatedly by the owner. The mutex doesn't become unlocked until the owner has called pthread_mutex_unlock() for each successful lock request that it has outstanding on the mutex.
  • 34. Xilkernel - Mutex • “Mutual exclusion lock” – Very simple form of semaphore • pthread_mutex_init() • pthread_mutex_lock() • pthread_mutex_unlock() • pthread_mutexattr_init() • pthread_mutexattr_settype()
  • 35. Xilkernel – Dynamic Buffer Memory Management • Xilkernel provides a buffer memory allocation scheme, can be used by applications that need dynamic memory allocation • Alternatives for standard C memory allocation routines like malloc() and free() which are much slower and bigger, though more powerful • The allocation routines hand off pieces of memory from a pool of memory that the user passes to the buffer memory manager.
  • 36. Xilkernel – Dynamic Buffer Memory Management • The buffer memory manager manages the pool of memory. You can dynamically create new pools of memory. • You can statically specify the different memory blocks sizes and number of such memory blocks required for your applications • This method of buffer management is relatively simple, small and a fast way of allocating memory.
  • 37. Xilkernel – Dynamic Memory • Used for allocating buffers of custom sizes and widths • bufcreate() • bufdestroy() • bufmalloc() • buffree()
  • 38. Xilkernel – Software Timers • Xilkernel provides software timer functionality, for time relating processing. – unsigned int xget_clock_ticks() – time_t time(time_t *timer) – unsigned sleep(unsigned int ms)
  • 39. Xilkernel – Interrupt Handling • Xilkernel abstracts primary interrupt handling requirements from the user application • Even though the Kernel is functional without any interrupts, it makes sense for the system to be driven by a single timer interrupt for scheduling.
  • 40. Xilkernel – Interrupt Handling • Kernel handles the main timer interrupt, using it as the Kernel tick to perform scheduling. • The timer interrupt is initialized and tied to the vectoring code during system initialization. • This Kernel pulse provides software timer facilities and time-related routines also.
  • 41. Xilkernel – Interrupt Handling • Additionally, Xilkernel can handle multiple interrupts when connected through an interrupt controller, and works with the opb_intc interrupt controller core.
  • 42. Xilkernel – Interrupt Handling • Basic Interrupt Service in Xilkernel
  • 43. Xilkernel – Exception Handling • Xilkernel handles exceptions for the MicroBlaze processor, threating them as faulting conditions by the executing processes/threads. • Xilkernel kills the faulting process and reports using a message to the console (if verbose mode is on) as to the nature of the exception. • You cannot register your own handlers for these exceptions and Xilkernel handles them all natively.
  • 44. Xilkernel – Interrupts in C • Xilkernel abstracts the function calls to the interrupt controller • Peripherals must be tied to the interrupt controller in hardware – 1. “Software Platform Settings” under “Interrupt Handlers” give desired interrupt a handler name. The interrupt controller does not require a handler unless the user would like a special function call for any interrupt that occurs
  • 45. Xilkernel – Interrupts in C – 2. In main code, initialize the interrupting peripheral with it's API – 3. Initialize the interrupting peripheral's interrupt with it's API and start it running if required (such as a timer) – 4. use the xilkernel function: “enable_interrupt()” - which takes in the interrupt ID of the peripheral found in “xparameters.h”. For the enable function call, it is of type “int_id_t” – 5. Have a function prepared with the handler name
  • 46. Xilkernel – Memory Protection • Memory protection is an extremely useful feature that can increase the robustness, reliability, and fault tolerance of your Xilkernel-based application.
  • 47. Xilkernel – Memory Protection • Memory protection requires support from the hardware. • Xilkernel is designed to make use of the MicroBlaze Memory Management (Protection) Unit (MMU) features when available. This allows you to build fail- safe applications that each run within the valid sandbox of the system, as determined by the executable file and available I/O devices.
  • 48. Xilkernel – Memory Protection • Note: Full virtual memory management is not supported by Xilkernel. Even when a full MMU is available on MicroBlaze, only transparent memory translations are used, and there is no concept of demand paging. • Note: Xilkernel does not support the same set of features using the MMU on PowerPC processors.
  • 49. Xilkernel – Hardware Requirements • Scheduling and all the dependent features require a periodic Kernel tick and typically some kind of timer is used. • Xilkernel has been designed to be able to work with either the Xilinx fit_timer IP core or the opb_timer IP core.
  • 50. Xilkernel – Hardware Requirements • Xilkernel has also been designed to work in scenarios involving multiple- interrupting peripherals. • The opb_intc IP core is used to handle the hardware interrupts and then feed a single IRQ line from the controller to the processor.
  • 51. Xilkernel – Hardware Requirements • By specifying the name of the interruptcontroller peripheral in the software platform configuration, you would be getting Kernel awareness of multiple interrupts. Xilkernel would automatically initialize the hardware cores, interrupt system, and the second level of software handlers as a part of its startup. • You don't have to do this manually.
  • 52. Xilkernel – Hardware Requirements • Xilkernel handles non-cascaded interrupt controllers; cascaded interrupt controllers are not supported.
  • 53. Xilkernel – System Initialization • The entry point for the Kernel is the xilkernel_main( ) routine defined in main.c. • Any user initialization that must be performed can be done before the call to xilkernel_main( ). This includes any system-wide features that might need to be enabled before invoking xilkernel_main( ).
  • 54. Xilkernel – System Initialization • These are typically machine-state features such as cache enablement or hardware exception enablement that must be quot;always ONquot; even when context switching between applications. • Make sure to set up such system states before invoking xilkernel_main( ).
  • 55. Xilkernel – System Initialization • The first action that is performed within xilkernel_init is kernel-specific • hardware initialization. – This includes • registering the interrupt handlers and configuring the system timer, • as well as memory protection initialization. Interrupts/exceptions are not enabled • after completing hw_init( ). The sys_init( ) routine is entered next.
  • 56. Xilkernel – System Initialization • This routine performs initialization of each module, such as processes and threads, initializing in the following order: – 1. Internal process context structures – 2. Ready queues – 3. pthread module – 4. Semaphore module – 5. Message queue module – 6. Shared memory module – 7. Memory allocation module – 8. Software timers module – 9. Idle task creation – 10. Static pthread creation • After these steps, interrupts, and exceptions are enabled, the Kernel loops infinitely in the idle task, enabling the scheduler to start scheduling processes.
  • 58. Xilkernel - Links • Wireless Open-Access Research Platform – http://warp.rice.edu/trac/wiki/xilkernel_ref – http://warp.rice.edu/trac/wiki/ppc_prog_overv • Microblaze SMP Project – http://www.escet.urjc.es/~phuerta/SMP_proje • University of Dayton – http://academic.udayton.edu/markpatterson/ • Team iBox – www.et.byu.edu/groups/ibox/public/doc