• No results found

Real-Time Operating Systems.

N/A
N/A
Protected

Academic year: 2021

Share "Real-Time Operating Systems."

Copied!
33
0
0

Loading.... (view fulltext now)

Full text

(1)

Mines-Telecom Ludovic Apvrille

[email protected] Eurecom, office 470

http://soc.eurecom.fr/OS/

Real-time and embedded Systems Real-Time Operating Systems Linux for real-time systems

Embedded systems in a nutshell Real-time systems in a nutshell

Examples of real-time and embedded systems

Outline

Real-time and embedded Systems

Embedded systems in a nutshell Real-time systems in a nutshell

Examples of real-time and embedded systems

Real-Time Operating Systems

(2)

What is an Embedded System?

Definitions

◮ Computer system designed for specific purpose ◮ Tightly coupled hardware and software integration

◮ An embedding system may include several embedded systems

PC vs. embedded systems

◮ PC: general-purpose microprocessor and OS

◮ High power consumption, heat production, large size ◮ Embedded system

◮ Dedicated system

◮ Dedicated hardware (e.g., DSPs) and software

◮ Constraints of consumption, heat, size, performance, price, . . .

3/66 Fall 2014 Institut Mines-Telecom Real-Time Operating Systems

Real-time and embedded Systems Real-Time Operating Systems Linux for real-time systems

Embedded systems in a nutshell Real-time systems in a nutshell

Examples of real-time and embedded systems

A Few Characteristics of Embedded Systems

Environment

◮ The system evolves in an environment that must be taken into account: Temperature, vibration, impacts, variable power supply, interferences, corrosion, fire, water, radiations, etc.

Criticality

◮ Failures may have major consequences ◮ The system should always perform correctly!

◮ Hardware level: for example, a specification could be that the

system should continue to work even if an electronic component fails (redundancy)

◮ Safety at software level: e.g., handling of possible bugs and

crash

(3)

Highly Available Systems

Number of 9s Downtime per year Typical application

3 Nines (99.9%) ≈ 9h Desktop

4 Nines (99.99%) ≈ 1h Enterprise server 5 Nines (99.999%) ≈ 5mn Carrier-class server 6 Nines (99.9999%) ≈ 30s Carrier-switch equipment

Source: ”Providing Open Architecture High Availability solutions”, Revision 1.0, Published by HA Forum, Feb. 2001

5/66 Fall 2014 Institut Mines-Telecom Real-Time Operating Systems

Real-time and embedded Systems Real-Time Operating Systems Linux for real-time systems

Embedded systems in a nutshell Real-time systems in a nutshell

Examples of real-time and embedded systems

A Few Characteristics of Embedded Systems

(Cont.)

Reduced space, weight and consumption

◮ Example: smartphones

◮ Memory size is small with regards to PCs ◮ Reduced computation power

Various techniques

◮ Mix of analog, digital, software functions ◮ Hardware / software co-design

(4)

High-level Architecture

Embedded system = controlling system + controlled system + environment

7/66 Fall 2014 Institut Mines-Telecom Real-Time Operating Systems

Real-time and embedded Systems Real-Time Operating Systems Linux for real-time systems

Embedded systems in a nutshell Real-time systems in a nutshell

Examples of real-time and embedded systems

(5)

Example of Embedded Systems

9/66 Fall 2014 Institut Mines-Telecom Real-Time Operating Systems

Real-time and embedded Systems Real-Time Operating Systems Linux for real-time systems

Embedded systems in a nutshell Real-time systems in a nutshell

Examples of real-time and embedded systems

Typical Cross-Platform Environment for the

Development of Embedded Systems

(6)

View of the Target Embedded System

11/66 Fall 2014 Institut Mines-Telecom Real-Time Operating Systems

Real-time and embedded Systems Real-Time Operating Systems Linux for real-time systems

Embedded systems in a nutshell Real-time systems in a nutshell

Examples of real-time and embedded systems

Debugging

◮ ROM Monitor

◮ Uses serial line

◮ On-Chip Debugging (OCD) = built-in microprocessor debugging capabilities

◮ BDM - Background Debug Mode ◮ JTAG - Joint Test Action Group

◮ No need for underlying software support on chip ◮ OCD debugging information:

◮ Content of processor registers ◮ System memory dump

◮ Instruction under execution ◮ . . .

(7)

What is a Real-Time System?

Real-Time Systems have been defined as:

”Those systems in which the correctness of the

system depends not only on the logical results of

the computation, but also on the time at which the

results are produced”

(J. Stankovic, ”Misconceptions About Real-Time Computing”, IEEE Computer, 21(10), October 1988)

13/66 Fall 2014 Institut Mines-Telecom Real-Time Operating Systems

Real-time and embedded Systems Real-Time Operating Systems Linux for real-time systems

Embedded systems in a nutshell Real-time systems in a nutshell

Examples of real-time and embedded systems

What is a Real-Time System? (Cont.)

More precisely, a system is said to be a Real-Time System if:

◮ It reacts to external stimuli

◮ System interacting with its environment

◮ It reacts to these stimuli within a limit of time, regardless of the load of the system

◮ WCET = Worst Case Execution Time ◮ Timing correctness

Vs. usual systems

◮ Only logical correctness ◮ Manage the average case

(8)

Response to External Events

15/66 Fall 2014 Institut Mines-Telecom Real-Time Operating Systems

Real-time and embedded Systems Real-Time Operating Systems Linux for real-time systems

Embedded systems in a nutshell Real-time systems in a nutshell

Examples of real-time and embedded systems

Jobs and Tasks

Definition

◮ A task is a set of related jobs joined to provide functions ◮ A job is a unit of work executed by the system

Parameters

◮ Temporal behavior

◮ E.g., a job lasting less than 20ms, a periodic task with

period = 30ms

◮ Functional: intrinsic properties of the job (e.g., taps of filter) ◮ Resource requirements (e.g., 10kb of memory)

◮ Interconnection: its communication with other jobs

◮ E.g., a decoding job must send its result to a displaying job ◮ Relies on shared memory, message queues, etc.

(9)

Time Constraints

◮ Time constraint = Constraint imposed on the timing behavior of a job

Release time

◮ Instant of time when a job becomes available for execution

Deadline

◮ Instant of time at which a job is required to be completed ◮ Absolute deadline = release time + relative deadline

Response Time

◮ Difference between the completion time and the release time of a job

17/66 Fall 2014 Institut Mines-Telecom Real-Time Operating Systems

Real-time and embedded Systems Real-Time Operating Systems Linux for real-time systems

Embedded systems in a nutshell Real-time systems in a nutshell

Examples of real-time and embedded systems

System Latency

◮ System latency = End-to-end delay between a change of state in the environment, and the corresponding output reaction produced by the system

◮ Latency involves: delay for scanning the environment, delay due to the OS, delay for executing calculations, delay for producing output results (communication delay)

◮ Jitter = incertitude on delays

◮ Load of the system,

etc.

◮ Should be low with

(10)

Determinism Issue

◮ Computing time

◮ Each activity can use various execution branches ◮ Communication time

◮ Status of messages queues, delay of signals, etc. ◮ Interrupts

◮ Software or hardware exceptions

19/66 Fall 2014 Institut Mines-Telecom Real-Time Operating Systems

Real-time and embedded Systems Real-Time Operating Systems Linux for real-time systems

Embedded systems in a nutshell Real-time systems in a nutshell

Examples of real-time and embedded systems

Hard and Soft Real-Time Systems

Comparison between hard and soft systems

1. The degree of tolerance of missed deadlines

2. The usefulness of computed results after missed deadlines

3. The severity of penalty incurred for failing to meet deadlines Hard system Soft system

1 Zero tolerance Non-zero

2 Useless Not zero right after passing deadline 3 Catastrophic Non-catastrophic

Complex real-time and embedded systems

A complex real-time and embedded system is commonly a mix of hard and soft subsystems

(11)

Example ♯1: A GSM Phone

Specification

◮ Software is in charge

◮ Of some operations performed at physical level (receiving,

sending, measuring the level of the electromagnetic field, etc.)

◮ Of logical operations such as scanning for incoming calls,

maintaining connections when changing of beams, etc.

◮ Sending and receiving voice data is a critical task ◮ 577µs of voice data are transmitted every 4.6ms ◮ 577µs of voice data are received every 4.6ms ◮ Management of the mobility issue

◮ If the distance to the relay is increasing, data should be emitted

earlier to remain synchronized with the relay (Doppler effect)

21/66 Fall 2014 Institut Mines-Telecom Real-Time Operating Systems

Real-time and embedded Systems Real-Time Operating Systems Linux for real-time systems

Embedded systems in a nutshell Real-time systems in a nutshell

Examples of real-time and embedded systems

Example ♯1: A GSM Phone (Cont.)

Constraints

◮ Temporal constraints on sending and receiving ◮ Global constraint: Audio quality

(12)

Example ♯2: A Multimedia System

Discrete media vs. continuous media

◮ Discrete media (= static): Media characterized by their spatial dimension: text, images

◮ Continuous media (= dynamic ): Media with a temporal dimension: sound, video and animations

Quality of Service (QoS)

◮ Fundamental issue!

◮ Use of synchronization techniques

23/66 Fall 2014 Institut Mines-Telecom Real-Time Operating Systems

Real-time and embedded Systems Real-Time Operating Systems Linux for real-time systems

Embedded systems in a nutshell Real-time systems in a nutshell

Examples of real-time and embedded systems

(13)

True or False?

A real-time system runs faster than usual systems?

An elevator controlling system is a real-time system?

A real-time application can be executed on every operating

systems?

25/66 Fall 2014 Institut Mines-Telecom Real-Time Operating Systems

Real-time and embedded Systems Real-Time Operating Systems Linux for real-time systems

Basics

Advanced concepts Exceptions and interrupts Timers

Outline

Real-time and embedded Systems

Real-Time Operating Systems

Basics

Advanced concepts Exceptions and interrupts Timers

(14)

Limitations of General-Purpose OS for

Real-Time Systems

◮ Scheduling policies share CPUs in fair way → They don’t take into account temporal constraints

◮ Communication mechanisms introduce non-deterministic temporal behavior

◮ Time is wasted at input / output management level ◮ Memory management (MMU, cache, dynamic allocation)

introduces non-deterministic execution time

◮ Software timers used for managing time are not fine-grained enough

Use of Real-Time Operating Systems

27/66 Fall 2014 Institut Mines-Telecom Real-Time Operating Systems

Real-time and embedded Systems Real-Time Operating Systems Linux for real-time systems

Basics

Advanced concepts Exceptions and interrupts Timers

Key Characteristics

Reliability

◮ Need to operate for a long period of time

◮ System reliability depends on all system elements ◮ Hardware, BSP, RTOS and application(s)

Predictability

◮ To a certain degree, and at least better than in GPOS ◮ Completion of system calls occurs within known frames

◮ Benchmark on the variance of the response times for each

system calls

(15)

Key Characteristics (Cont.)

Performance

◮ CPU performance: MIPS ◮ Throughput performance: bps

◮ Performance should be measured as a whole

Compactness

◮ RTOS memory footprint should be small

Scalability, i.e handling application-specific requirements

◮ Modular components

◮ File systems, protocol stacks, etc.

29/66 Fall 2014 Institut Mines-Telecom Real-Time Operating Systems

Real-time and embedded Systems Real-Time Operating Systems Linux for real-time systems

Basics

Advanced concepts Exceptions and interrupts Timers

Target System Software Initialization

Sequence

(16)

Examples of RTOS

◮ VxWorks

◮ LynuxWorks ◮ QNX

◮ Windows Mobile, iOS, Symbian, BlackBerry Operating System1

◮ Linux for RT and embedded systems ◮ µCLinux

◮ RTLinux ◮ RTAI ◮ Android

1It is based on QNX

31/66 Fall 2014 Institut Mines-Telecom Real-Time Operating Systems

Real-time and embedded Systems Real-Time Operating Systems Linux for real-time systems

Basics

Advanced concepts Exceptions and interrupts Timers

Developing an Application for VxWorks with

Tornado

(17)

Debuging Using WindView

33/66 Fall 2014 Institut Mines-Telecom Real-Time Operating Systems

Real-time and embedded Systems Real-Time Operating Systems Linux for real-time systems

Basics

Advanced concepts Exceptions and interrupts Timers

Using Free and Open-Source OS for

Embedded Systems

◮ No royalties when distributing the embedded system ◮ Source code is available

◮ Maintenance can be performed for as long as desired ◮ Systems can be built from this source code

(18)

How to Make UNIX more ”Real-Time”

UNIX Real-Time UNIX

Time-sharing based scheduling Real-time scheduling classes Services not reentrant Fully reentrant libraries

IPC non deterministic Reworking IPC with determin-istic communication time Large memory footprint Modularity (micro-kernels) Timing issues, timer accuracy Preemptive kernel

. . . .

35/66 Fall 2014 Institut Mines-Telecom Real-Time Operating Systems

Real-time and embedded Systems Real-Time Operating Systems Linux for real-time systems

Basics

Advanced concepts Exceptions and interrupts Timers

Scheduling

Limitations of schedulers in general-purpose OS

◮ Schedulers are defined with interactivity in mind ◮ Dynamic priorities

◮ Calculation tasks are penalized

◮ Temporal constraints are not taken into account ◮ Schedulability analysis cannot be performed

Schedulers for Real-Time Systems

(19)

Preemption Latency in a Priority-Based

System

37/66 Fall 2014 Institut Mines-Telecom Real-Time Operating Systems

Real-time and embedded Systems Real-Time Operating Systems Linux for real-time systems

Basics

Advanced concepts Exceptions and interrupts Timers

Preemption Points

Adding preemption points in the kernel (”Fully preemptive”

kernel)

◮ Define a slice of time during which no preemption is allowed (e.g., 2,000 instructions)

◮ Rewrite all kernel primitives:

◮ The duration during which no preemption is allowed must

always be shorter than the defined slice of instructions

◮ After each slice, call the scheduler (just in case)

Limitation: Defining the slice is not obvious

◮ Too long → average preemption latency is higher ◮ Too short → important overhead

(20)

Memory Management

Dynamic allocations

◮ Should be avoided at run-time

◮ Algorithms are based on fixed-size blocks ◮ Pools of objects

◮ Avoid frequent allocation and fragmentation

No memory compaction

◮ Real-time compaction algorithms might be used

Most of the time, virtual addressing (i.e., MMU) is not used

◮ And sometimes even not implemented in RTOS! ◮ Page fault introduces non-determinism

39/66 Fall 2014 Institut Mines-Telecom Real-Time Operating Systems

Real-time and embedded Systems Real-Time Operating Systems Linux for real-time systems

Basics

Advanced concepts Exceptions and interrupts Timers

IPC - Inter Process Communications

Limitations for RT systems

◮ No deterministic transmission delay for:

◮ Signals, pipes, message passing, semaphores, shared memory

A Few Solutions

◮ Implementation with deterministic processing time ◮ Example: RT-FIFO

◮ RT-FIFO = FIFO with predefined maximum size and with

(21)

Input / Output Management

Limitations for RT systems

◮ Difficult or impossible to bound the time to perform an I/O operation

Solutions

◮ Drivers working closely with the kernel

◮ Deterministic delay in all inter-process communications ◮ Communication structures with basic and deterministic

algorithms

◮ RT-FIFO, RT-signals, etc.

41/66 Fall 2014 Institut Mines-Telecom Real-Time Operating Systems

Real-time and embedded Systems Real-Time Operating Systems Linux for real-time systems

Basics

Advanced concepts Exceptions and interrupts Timers

Reentrant Runtime Libraries

Issue

◮ Libraries offer services such as: Input / Output operations, dynamic memory allocations, etc.

◮ Services may have an internal state: buffer (I/O), pointer to the next chunk of free memory, etc.

◮ If preemption occurs when a service is being called, internal state of the service may be corrupted

Solutions

◮ Protection at application level: mutex, semaphore, etc. ◮ Safe, but costly

◮ Use a reentrant version of the library (if available)

(22)

Exceptions and Interrupts

Exceptions

◮ Events that disrupt the normal execution flow of the processor and force the processor to execute special instructions in a privileged state

◮ Synchronous exceptions ◮ Divide by zero

◮ Asynchronous exceptions

◮ Pushing the reset button of the embedded system

Interrupts

◮ = Asynchronous exceptions triggered by events external hardware devices generate

43/66 Fall 2014 Institut Mines-Telecom Real-Time Operating Systems

Real-time and embedded Systems Real-Time Operating Systems Linux for real-time systems

Basics

Advanced concepts Exceptions and interrupts Timers

Programmable Interrupt Controller

◮ Hardware-implemented

◮ Prioritizing multiple interrupt sources so that at any time the highest priority interrupt is presented to the core CPU for processing

◮ PICs have a set of Interrupt Request Lines ◮ Interrupt = physical signal on a given line ◮ Handlers specified at PIC level

◮ ESR = Exception Service Routine ◮ ISR = Interrupt Service Routine

(23)

Programmable Interrupt Controller: Example

Source Priority Vector

Address IRQ Max freq. Description Airbag sensor

Highest 14h 8 N/A Detects the

need to deploy airbags

Brake sensor

High 18h 7 N/A Informs about

the current braking power Fuel

Level Sensor

Med 1Bh 6 20Hz Detects the

level of fuel

RTC Low 1Dh 5 100Hz Clock runs at

(24)

Masking Interrupts

Why masking?

◮ Reduce the total number of interrupts raised by devices ◮ Interrupts are lost when masked

◮ Function being processed is non-reentrant ◮ Atomic operations

How is masking done?

◮ Disable the device so that it cannot assert additional interrupts

◮ Mask the interrupts of equal or lower priority levels ◮ Disable the line between the PIC and the core processor

◮ Interrupts of any priority level do not reach the processor

47/66 Fall 2014 Institut Mines-Telecom Real-Time Operating Systems

Real-time and embedded Systems Real-Time Operating Systems Linux for real-time systems

Basics

Advanced concepts Exceptions and interrupts Timers

Classification of Exceptions

Asynchronous

Non-maskable

Cannot be blocked or enabled by software

Maskable

Can be blocked or enabled by software

Synchronous

Precise

Program counter points to

the exact instruction which caused the exception (Offending instruction)

Processor knows where to

resume the execution

Non-precise

Because of prefetching and pipelining techniques, no knowledge about the exact instruction that caused the exception

(25)

General Exceptions Priorities

49/66 Fall 2014 Institut Mines-Telecom Real-Time Operating Systems

Real-time and embedded Systems Real-Time Operating Systems Linux for real-time systems

Basics

Advanced concepts Exceptions and interrupts Timers

(26)

Exceptions Timing

◮ ESR and ISR should be short ◮ Designers

◮ Should avoid situations where interrupts could be missed ◮ Should be aware of the interrupt frequency of each device

◮ Maximum allowed duration can be deduced from this

information

◮ Should take into account the fact that real-time tasks cannot

execute when interrupts are being processed

51/66 Fall 2014 Institut Mines-Telecom Real-Time Operating Systems

Real-time and embedded Systems Real-Time Operating Systems Linux for real-time systems

Basics

Advanced concepts Exceptions and interrupts Timers

(27)

Cutting ISRs in Two Parts

Figure: The caption

53/66 Fall 2014 Institut Mines-Telecom Real-Time Operating Systems

Real-time and embedded Systems Real-Time Operating Systems Linux for real-time systems

Basics

Advanced concepts Exceptions and interrupts Timers

Conclusion on ISRs

Benefits about cutting ISRs in two parts

◮ Lower priority interrupts can be handled ◮ Reduces the chance of missing interrupts

◮ Increase concurrency because devices can start working on next operations earlier

General guide for implementing ISRs

◮ An ISR should disable interrupts of the same level

◮ An ISR should mask all interrupts if it needs to execute a sequence of code as one atomic operation

◮ An ISR should avoid calling non-reentrant functions and blocking system calls

(28)

Timer and Timer Services

Use of Timers

Applications often have to perform jobs after a given delay has elapsed

Programmable Interval Timers (PIT)

55/66 Fall 2014 Institut Mines-Telecom Real-Time Operating Systems

Real-time and embedded Systems Real-Time Operating Systems Linux for real-time systems

Basics

Advanced concepts Exceptions and interrupts Timers

Timer Interrupt Service Routine

◮ Updating the system clock ◮ Absolute time (calendar) ◮ Elapsed time (since power up)

◮ Calling a registered kernel function to notify the occurrence of a pre-programmed period

◮ announce time tick()

Calls the Scheduler and the Soft-timer facility

◮ Acknowledging the interrupt, reinitializing the necessary timer control register and returning from interrupt

(29)

Steps in Servicing Timer Interrupt

57/66 Fall 2014 Institut Mines-Telecom Real-Time Operating Systems

Real-time and embedded Systems Real-Time Operating Systems Linux for real-time systems

Basics

Advanced concepts Exceptions and interrupts Timers

Implementing the Soft-Timer Handling

Facility

Goal

◮ Allowing applications to start a timer

◮ A callback function is called when the timer expires

◮ Allowing applications to stop or cancel a previously installed timer

◮ Internally maintaining the application timers

Implementation: timer ISR

The timer ISR should be as fast as possible to avoid missing next timer interrupts

(30)

Timer Inaccuracy Due to Processing Delays

◮ ISR triggers asynchronous events to signal a task of the expiration of its timer

◮ E.g., sending of a message, release of a semaphore ◮ Task scheduling delay, context switch

◮ Higher priority task may be running

59/66 Fall 2014 Institut Mines-Telecom Real-Time Operating Systems

Real-time and embedded Systems Real-Time Operating Systems Linux for real-time systems

Limitations A few solutions RTAI

Outline

Real-time and embedded Systems

Real-Time Operating Systems

Linux for real-time systems

Limitations A few solutions RTAI

(31)

Limitations of Linux for Real-Time Systems

◮ Time-sharing system

◮ Interactivity-based scheduling: strict priority-based approach is

needed in real-time systems!

◮ Long code sections where all external events are masked ◮ Preemption is not possible

◮ Kernel cannot be preempted

◮ When executing a system call (so, interrupts may be missed!) ◮ When executing an ISR

◮ Device management

◮ Partial support for POSIX.4

61/66 Fall 2014 Institut Mines-Telecom Real-Time Operating Systems

Real-time and embedded Systems Real-Time Operating Systems Linux for real-time systems

Limitations A few solutions RTAI

Towards a Linux for Real-Time Systems

◮ Introducing a real-time scheduler and preemption points ◮ Patching the kernel

(32)

Introducing a Real-Time Scheduler (Patch)

Patchs are said to be ”preemptive”

◮ Kernel’s latency is reduced

◮ Limited to soft real-time systems?

”RT-Preempt”

◮ Based on call to the scheduler whenever possible

◮ Kernel’s data are protected with mutex

”Low Latency”

◮ Adds preemption points at carefully chosen places in the code

◮ Approach is less systematic ◮ Performance study demonstrates

its efficiency with regards to the ”Preempt kernel” patch

63/66 Fall 2014 Institut Mines-Telecom Real-Time Operating Systems

Real-time and embedded Systems Real-Time Operating Systems Linux for real-time systems

Limitations A few solutions RTAI

Modifying the Kernel (Modules)

Basic idea: the Linux kernel will never be ”real-time”

◮ Another scheduler is added to the kernel ◮ Priority-based scheduling policy

◮ Non real-time tasks are scheduled by the default Linux

scheduler

◮ Real-time tasks are programmed as linux kernel modules ◮ → Hard real-time system

Two main implementations

◮ RTAI (http://www.rtai.org/) ◮ RTLinux (FSMLabs)

(33)

Architecture of the Linux Kernel

65/66 Fall 2014 Institut Mines-Telecom Real-Time Operating Systems

Real-time and embedded Systems Real-Time Operating Systems Linux for real-time systems

Limitations A few solutions RTAI

References

Related documents

These included the iMLS and LSTA grant program; Ross Fuqua at the Oregon State Library; Esther Moberg and the staff the Seaside Public Library; our ILS vendor, The Library

Adam Smith, Archives Technician Heidi Southworth, Digital Initiatives Librarian Tom Tran, Systems Librarian Daniel Vang, Information Technology Specialist Library Technology

Vidare undersöks om det finns förbättringspotential inom branschen angående kommunikation av klimatfördelar till kunderna, vilka faktorer i kommunikationen som spelar roll samt

In this paper, we present and formulate the Internet host profiling problem using the header data from public packet traces to select relevant features of frequently-seen hosts

Dr Srivastava: Intravitreal sirolimus 440 µg is being developed as a local treatment for noninfectious uveitis involving the posterior segment.. It is a mammalian target of

mechanisms based on social capital to private SMEs in China, and assist us in explaining their capital structure decisions, we augment the traditional theories of

Perhaps, the melanoma xenotransplant system, where no growth disadvantage is conferred to tumor cells upon CCR9 inhibition, would be a better model to uncouple

Fitted out to the highest standards offering spacious modern living spread over three floors.. A stunning 4/5 bedroom semi-detached house, with spacious living over